Пространственные данные, в отличие от других типов, требуют немного большего внимания к деталям. Представление пространственных данных может быть во многих формах, которые могут дать преимущество в зависимости от среды.

В Интернете формат GeoJSON предоставляет гибкую структуру, которую можно легко создать и изменить благодаря формату, производному от JSON.

Онлайн-редакторы, такие как geojson.io, помогают форматировать пространственные данные в соответствии с спецификацией RFC 7946 для GeoJSON.

В рамках недавнего проекта требовалась задача сохранения пространственных данных. Данные должны были поступить как GeoJSON и храниться в нашей базе данных Microsoft SQL Server.

В отличие от PostgreSQL с PostGIS в качестве расширения - SQL Server изначально не понимает геометрию GeoJSON. Вместо этого SQL Server хранит геометрию в хорошо известном двоичном формате (WKB). Посредством сериализации геометрии данные становятся переносимыми, поскольку теперь их представление определяется как поток байтов. Из-за сериализации геометрические фигуры в формате WKT не читаются.

000000000140000000000000004010000000000000

Наш проект, написанный на JavaScript, предоставляет нам доступ к модулям npm, которые упрощают хранение геометрии из GeoJSON в SQL Server.

  • node-mssql - клиентский узел для подключения к нашей базе данных
  • wellknown - модуль для преобразования геометрии GeoJSON в хорошо знакомый текст (WKT)

Известный метод stringify из геометрии GeoJSON вернет нам геометрию в формате WKT, текстовом формате, представляющем геометрию, которую SQL Server может анализировать внутри своего собственного формата WKB.

Теперь, когда наша геометрия инкапсулирована в строку, выполнить хранимую процедуру для вставки данных стало просто.

Предполагая, что в нашей таблице есть такой столбец, за кулисами SQL Server сможет интерпретировать нашу строку WKT в формате WKB!

CREATE TABLE GeometryTable (
    [Geometry] GEOMETRY NOT NULL
)

Возврат GeoJSON из SQL Server также можно выполнить в несколько шагов.

SELECT Geometry.toString() as [WKTGeometry]

Что вернет знакомую геометрию WKT, которая теперь хорошо известна, может быть проанализирована, чтобы дать нам наш объект геометрии GeoJSON.

В качестве последнего шага со всеми пространственными данными - нанесите их на карту!

Примечание

Это мой первый технический и средний пост! Мы очень ценим отзывы обо всем, что связано с этим, ура!