Sql Server 2008支持新的幾何和地理UDT的空間數據。它們都支持AsGml()方法以gml格式序列化數據。但是,他們將數據序列化爲GML3格式。有什麼辦法可以告訴它將數據序列化成GML2格式嗎?是否可以從gml2格式導出Sql Server 2008的空間數據?
1
A
回答
0
正如馬爾科說,有在Sql Server 2008中不支持gml2,所以我最終編寫了一個函數,用於將服務器返回的gml3轉換爲我需要的gml2。
0
沒有支持GML2,但有擴展性API可用於實現自定義序列化。
這裏是自定義序列的使用SqlGeometry.Populate(IGeometrySink)方法(C#代碼)的示例:
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(')');
}
}
要執行反序列化使用SqlGeometryBuilder類:
// 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;
1
AFAIK,沒有內置功能將地理空間數據序列化到GML 2.x.你需要使用一些第三方工具,實現一個你想寫的作家,或者,這個建議可能聽起來有點奇怪,使用PostGIS進行這個轉換。
PostGIS是替代地理空間數據庫,與SQL Server類似的解決方案,但實現了de-/serialization格式:GML 2和GML 3。
我建議使用PostGIS作爲中間和翻譯存儲。
存儲數據到GML 3使用使用ST_AsGML,讓您的SQL Server功能
加載數據序列化到GML 3使用PostGIS的功能ST_GeomFromGML
存儲的數據從PostGIS的到GML 2格式指定GML的目標版本:
text ST_AsGML(integer version, geometry g1);
它聽起來可能是str憤怒提出另一個地理空間數據庫,但我相信它會工作相當順利和良好。
0
既然你完成了沒有太多的意義,但我會建議把geoserver放在SQL Server的前面。 Geoserver具有內置的所有序列化代碼,幾乎可以滿足任何您想要的格式,安裝起來非常簡單,並且可以像廣告一樣工作。
http://docs.geoserver.org/2.0.x/en/user/services/wfs/outputformats.html
相關問題
- 1. 以CSV格式導出數據表sql server 2008
- 2. 是否可以從SQL Server 2008中導出數據庫並將其導入到SQL Server 2005中?
- 3. 是否可以鏡像SQL Server 2008和SQL Server 2008R2數據庫?
- 4. SQL Server 2008導入/導出數據
- 5. Sql Server 2008的空間數據示例
- 6. 是否可以生成從SQL Server 2008到SQL Server 2008 Express的腳本
- 7. 從SQL Server 2008導出
- 8. 從SQL Server 2008數據庫使用c導出excel表格
- 9. 如何將數據庫從SQL Server 2008導出到SQL Server 2005
- 10. SQL Server 2008 - 查詢空間數據
- 11. 如何導出SQL Server 2008數據庫?
- 12. 導出SQL Server 2008 R2數據庫
- 13. SQL Server數據庫模式是否可以從.NET類生成
- 14. 是否可以使用Trigger和ODBC將表數據從SQL Server導出到Firebird?
- 15. 數據導入SQL Server 2008
- 16. 是否可以用iif格式導出數據使用php?
- 17. 使用SQL Server 2008將所有數據庫數據導出爲xml格式
- 18. 將地理空間數據從SQL Server導出到ArcGIS?
- 19. sql server 2008:是否可以指定格式而不是使用formatfile?
- 20. SQL Server 2008空間聚類
- 21. 我們是否可以將SQL Server 2008 R2 Express的數據庫備份還原到SQL Server 2008 Express
- 22. 爲SQL Server 2008免費模式導出?
- 23. 日期時間格式在SQL Server 2008
- 24. 將數據庫從SQL Server 2008 R2實例導出到SQL Express 2008
- 25. VS 2013 SQL Server數據工具是否支持SQL Server 2008 R2?
- 26. 將數據庫表從SQL Server 2008 R2導出到Excel 2007
- 27. 以CSV格式導出數據庫是否保留其模式?
- 28. 輸出值和它是否存在SQL Server 2008數據庫
- 29. 是否SQL Server 2008 Express仍然可用?
- 30. 是否可以將SQL Reporting Service添加到SQL Server 2008 Express?