Sql Server 2008 поддерживает пространственные данные с новой геометрией и географией UDT. Оба они поддерживают метод AsGml() для сериализации данных в формате gml. Однако они сериализуют данные в формате GML3. Есть ли способ рассказать ему о сериализации данных в формате GML2?Можно ли экспортировать пространственные данные из Sql Server 2008 в формате gml2?
ответ
Как сказал Марко, там не поддерживает gml2 в Sql Server 2008, поэтому я просто написал функцию для преобразования gml3, возвращаемого сервером, в gml2, который мне нужен.
Поддержка 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;
AFAIK, нет встроенной функции для сериализации геопространственных данных в GML 2.x. Вам нужно использовать некоторые сторонние инструменты, реализовать сценарий youserlf или, это предложение может показаться немного странным, используйте для этого перехода PostGIS.
PostGIS - это альтернативная геопространственная база данных, аналогичное решение для SQL Server, но реализующая дезадаптацию для обоих форматов: GML 2 и GML 3.
Что я предлагаю использовать PostGIS в качестве промежуточного и переводного хранилища.
хранить данные GML 3 с использованием функций SQL Server
Загрузка данных сериализовать в GML 3 с использованием функции PostGIS ST_GeomFromGML
хранилище данных из PostGIS в формате GML 2 с использованием ST_AsGML, который позволяет вам указать целевую версию GML:
text ST_AsGML(integer version, geometry g1);
Это может звучать str ange предложить другую геопространственную базу данных, но я уверен, что она будет работать довольно гладко и хорошо.
Ну, так как вы закончили, не так много смысла, но я бы рекомендовал поставить geoserver перед SQL Server. Geoserver имеет весь код сериализации, построенный практически для любого формата, который вам нужен, легко устанавливается и работает как рекламируемый.
http://docs.geoserver.org/2.0.x/en/user/services/wfs/outputformats.html
- 1. Пространственные данные SQL Server
- 2. SQL SERVER Пространственные данные
- 3. Пространственные запросы данных в SQL Server 2008
- 4. Пространственные данные с SQL Server 2008 и виртуальной землей
- 5. Можно ли экспортировать базу данных из SQL Server 2008 и импортировать ее в SQL Server 2005?
- 6. SQL Server 2012 Пространственные данные Тип
- 7. SQL Server: экспортировать данные через SQL-запрос?
- 8. Показать данные в формате-б в SQL Server 2008
- 9. SQL Server 2008 Сводные данные
- 10. Как экспортировать данные из таблицы в Excel на SQL Server 2008 с помощью T-SQL?
- 11. Возможно ли экспортировать данные в формате PDF из справочной таблицы
- 12. Как импортировать данные в SQL Server 2008
- 13. Можно ли экспортировать данные таблицы из SQL Server в Firebird с помощью Trigger и ODBC?
- 14. Экспортировать таблицу, содержащую столбец данных XML в SQL Server 2008
- 15. Можно ли программно экспортировать экспортированные данные PrimeFaces?
- 16. SQL Server 2008 - данные поворотных
- 17. Пространственные данные/География в SQL Server 2008, OR mappers и C#
- 18. Можно ли вставлять данные в MySQL из триггера SQL Server?
- 19. Можно ли выбрать конкретный ORDER BY в SQL Server 2008?
- 20. Как экспортировать данные из hbase в SQL Server
- 21. Как экспортировать данные из таблицы Excel в Sql Server 2008 таблица
- 22. Как экспортировать данные из SQL Server 2005 в MySQL
- 23. Можно ли экспортировать данные таблицы в JSON?
- 24. Как я могу экспортировать базу данных SQL Server 2008?
- 25. SQL Server xp_cmdshell не удается экспортировать данные
- 26. можно экспортировать данные поиска в файл csv
- 27. Вставьте данные UTF8 в SQL Server 2008
- 28. Как экспортировать данные из таблицы SQL Server в файл Excel
- 29. Как быстро экспортировать данные из R в SQL Server
- 30. Как экспортировать данные utf-8 из SQL Server 2008 в excel