Ist es möglich, räumliche Daten aus SQL Server 2008 in gml2-Format zu exportieren?

stimmen
1

SQL Server 2008 unterstützt räumliche Daten mit neuer Geometrie und Geographie UDT. Beide unterstützen AsGml () Methode Daten in GML Format serialisieren. Allerdings serialisiert sie Daten in GML3 Format. Gibt es eine Möglichkeit, es zu sagen, Daten in GML2 Format serialisiert werden?

Veröffentlicht am 09/12/2008 um 15:03
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
0

Es gibt keine Unterstützung für GML2, aber es gibt Erweiterbarkeit API, die verwendet werden können, um benutzerdefinierte Serialisierung zu implementieren.

Hier ist ein Beispiel für individuelle Serialisierung über SqlGeometry.Populate (IGeometrySink) Verfahren (C # code):

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(')');
    }
}

Deserialisierung Verwendung SqlGeometryBuilder Klasse zu tun:

// 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;
Beantwortet am 30/01/2009 um 18:03
quelle vom benutzer

stimmen
0

Wie Marko sagte, gibt es keine Unterstützung für gml2 in SQL Server 2008, so dass ich nur eine Funktion zu schreiben für die Transformation von GML3 zurückgegeben vom Server beenden bis zu gml2 dass ich brauchte.

Beantwortet am 14/02/2009 um 13:02
quelle vom benutzer

stimmen
1

AFAIK, gibt es keine integrierte Funktion Erdbeobachtungsdaten zu GML 2.x. serialisiert Sie müssen einige Tools von Drittanbietern verwenden, implementieren einen Schriftsteller youserlf oder dieser Vorschlag ein wenig seltsam, verwenden klingt PostGIS für diesen Übergang.

PostGIS ist alternative geospatial Datenbank, ähnliche Lösung auf SQL Server, aber die Umsetzung De- / Serialisierung für beide Formate: GML 2 und GML 3 .

Was würde ich vorschlagen, ist PostGIS als Zwischen und übersetzen Speicher zu verwenden.

  1. Speicherung der Daten auf GML 3 SQL Server Funktionen

  2. Lastdaten serialisiert GML 3 unter Verwendung von PostGIS Funktion ST_GeomFromGML

  3. Speichern von Daten von PostGIS zu GML 2 - Format mit ST_AsGML , die Sie Zielversion von GML angeben können:text ST_AsGML(integer version, geometry g1);

Es mag seltsam klingen andere geospatial Datenbank vorzuschlagen, aber ich bin sicher, dass es ziemlich glatt und gut funktionieren würde.

Beantwortet am 03/02/2010 um 20:32
quelle vom benutzer

stimmen
0

Nun, da Sie fertig gibt es nicht viel Sinn, aber ich würde empfehlen geoserver vor SQL Server setzen. Geoserver hat alle Serialisierungscode für fast jedes Format eingebaut Sie wollen, ist einfach cheezy zu installieren und funktioniert wie beworben.

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

Beantwortet am 08/02/2010 um 04:24
quelle vom benutzer

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