o gml2 formatında SQL Server 2008 den uzamsal verileri dışa mümkün mü?

oy
1

SQL Server 2008 yeni geometri ve coğrafya UDT en mekansal verileri desteklemektedir. Her ikisi de gml biçiminde veri seri hale getirmek için AsGml () yöntemi destekler. Ancak onlar GML3 biçime serileştirip. GML2 biçime veri seri hale getirmek söylemek için herhangi bir yolu var mı?

Oluştur 09/12/2008 saat 15:03
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
0

GML2 desteği yoktur, ancak özel seri uygulamak için kullanılabilir genişletilebilirlik API yoktur.

Burada SqlGeometry.Populate (IGeometrySink) yöntemi (C # kod) kullanılarak, özel seri bir örneğidir:

CustomWriter w = new CustomWriter();
SqlGeometry.Parse("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))").Populate(w);
System.Console.WriteLine(w);

public class CustomWriter : IGeometrySink {
    private StringBuilder _builder = new StringBuilder();

    public string ToString() {
        return _builder.ToString();
    }

    public void SetSrid(int srid) {
        _builder.Append('@');
        _builder.Append(srid);
    }

    public void BeginGeometry(OpenGisGeometryType type) {
        _builder.Append(" (");
        _builder.Append(type);
    }

    public void BeginFigure(double x, double y, double? z, double? m) {
        _builder.Append(" [");
        _builder.Append(x);
        _builder.Append(' ');
        _builder.Append(y);
    }

    public void AddLine(double x, double y, double? z, double? m) {
        _builder.Append(',');
        _builder.Append(x);
        _builder.Append(' ');
        _builder.Append(y);
    }

    public void EndFigure() {
        _builder.Append(']');
    }

    public void EndGeometry() {
        _builder.Append(')');
    }
}

Seri kaldırma kullanımı SqlGeometryBuilder sınıfını yapmak için:

// Create "POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))" using Builder API
SqlGeometryBuilder b = new SqlGeometryBuilder();
b.SetSrid(0);
b.BeginGeometry(OpenGisGeometryType.Polygon);
    b.BeginFigure(0, 0);
    b.AddLine(10, 0);
    b.AddLine(10, 10);
    b.AddLine(0, 10);
    b.AddLine(0, 0);
    b.EndFigure();
b.EndGeometry();
SqlGeometry g = b.ConstructedGeometry;
Cevap 30/01/2009 saat 18:03
kaynak kullanıcı

oy
0

Marko dediği gibi, orada SQL Server 2008 yılında gml2 için destek, bu yüzden ben sadece gerekli gml2 sunucu tarafından döndürülen gml3 dönüştürmek için bir işlev yazma sona erdi.

Cevap 14/02/2009 saat 13:02
kaynak kullanıcı

oy
1

AFAIK, hiçbir orada yerleşik olan özellik GML 2.x coğrafi verileri seri hale getirmek Sen kullanmak, bazı üçüncü taraf araçları kullanmak bir yazar youserlf uygulamak veya bu öneri biraz garip gelebilir gerekir PostGIS bu geçiş için.

PostGIS alternatif coğrafi veritabanı, SQL Server benzer bir çözüm, ancak uygulanması olduğu iki biçim için / seri de-: GML 2 ve GML 3 .

Ne öneririm bir ara ve tercüme depolama gibi PostGIS kullanmaktır.

  1. GML 3'e Mağaza veri SQL Server işlevlerini kullanarak

  2. Yük veri PostGIS fonksiyonu kullanılarak GML 3 tefrika ST_GeomFromGML

  3. Kullanarak GML 2 formatına PostGIS depola verileri ST_AsGML Eğer GML hedef sürümünü belirlemenizi sağlar:text ST_AsGML(integer version, geometry g1);

Başka bir mekansal veri önermeye garip gelebilir, ama düzgün ve iyi oldukça işe eminim.

Cevap 03/02/2010 saat 20:32
kaynak kullanıcı

oy
0

Bitirdikten Eh beri orada çok nokta değil ama SQL Server önünde geoserver koyarak öneriyoruz. Geoserver, istediğiniz hemen her biçim için yerleşik tüm seri hale getirme kodu vardır kolay kurulumu cheezy ve reklamı olarak çalışır.

http://docs.geoserver.org/2.0.x/en/user/services/wfs/outputformats.html

Cevap 08/02/2010 saat 04:24
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more