Пространственные данные, в отличие от других типов, требуют немного большего внимания к деталям. Представление пространственных данных может быть во многих формах, которые могут дать преимущество в зависимости от среды.
В Интернете формат 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.
В качестве последнего шага со всеми пространственными данными - нанесите их на карту!
Примечание
Это мой первый технический и средний пост! Мы очень ценим отзывы обо всем, что связано с этим, ура!