Вы знаете что такое GeoJSON?
Перевод: Mohamed Ashiq Sultan — Do you know GeoJSON?
PARUS AGENCY. Разработка сайтов в Самаре.
Полный спектр услуг по проектированию, дизайну, верстке, программированию в Самаре.
Компания PARUS AGENCY является Золотым сертифицированным партнером компании 1С-Битрикс.
Выполнено более 280 проектов за 11 лет работы.
Мы помогли выйти на новый уровень и увеличить прибыль многим компаниям.
Наши сайты идеально решают поставленную задачу.
Вы формулируете текущие задачи, стоящие перед вашим бизнесом,
мы подбираем правильное решение. Новый сайт или достаточно лендинга, b2b
сервисы, автоматизация, реклама.
Наши услуги:
— создание сайта
— редизайн существующего сайта
— поддержка и развития сайта
— seo продвижение
— контекстная реклама
— аудиты
— лицензии 1С-Битрикс
Введение
Для тех, кто не знает, что такое GeoJSON — это стандартный формат данных, используемый для хранения данных о местоположении и географических объектах.
Содержание
- Терминология
- Различные типы геометрии
- Ресурсы
GeoJSON — это просто объект JSON. Что отличает этот тип данных от простого JSON, так это его структура.
Некоторые базы данных, такие как Mongo DB, имеют официальную поддержку GeoJSON. Так же, как MongoDB идентифицирует типы String и Integer, он идентифицирует и отличает GeoJSON от обычного JSON. MongoDB поставляется с поддержкой индексации и запросов к GeoJSON.
В этом посте я расскажу о некоторых основных концепциях GeoJSON.
Типичный объект GeoJSON выглядит примерно так.
{ "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [-40.078125,70.72897946208789] } }
Терминологии
Координаты
Отдельная точка на карте называется координатой.
Когда мы указываем место на карте, мы указываем значение долготы и широты. Мы храним эти наборы значений в массиве, называемом координатами (coordinates).
Массив координат содержит два элемента — долготу и широту.
ПРИМЕЧАНИЕ: порядок важенcoordinates : [ longitude , latitude ]
Геометрия (geometry)
Думайте о геометрии как о структуре данных. Геометрия определяет, в какой структуре хранятся координаты.
Существуют предварительно определенные типы геометрии с учетом регистра, а именно «Point», «Line», «Polygon» и другие. Мы рассмотрим их одного за другим.
Типичная геометрия выглядит ниже
"geometry": { "type": "Point", "coordinates": [longitude,latitude] }
type
Каждая геометрия должна иметь свойство с названием «type», значение которого должно быть одним из типов GeoJSON, упомянутых в GeoJSON RFC (https://tools.ietf.org/html/rfc7946#page-6).
Есть некоторые типы геометрии, которые используются для хранения других типов геометрии. Это «Feature» и «FeatureCollection», о которых мы поговорим ниже.
Типы геометрии
Point
Точка — это отдельная точка или маркер на карте. Его поле geometry содержит единственную координату. Это может быть использовано для хранения отдельного места, например магазина.
"geometry": { "type": "Point", "coordinates": [ 78.4918212890625, 22.304343762932216 ] }
MultiPoint
Как вы уже догадались по названию, геометрия MultiPoint используется для хранения нескольких точек координат в одной геометрии. Каждый элемент в массиве координат сам по себе является координатой. Это может быть использовано для хранения списка любимых мест.
{ "type": "MultiPoint", "coordinates": [ [80.26951432228088,13.09223800602329], [80.27061939239502,13.091631907724683], [80.2714991569519,13.09260375427521], [80.27050137519836,13.093241199930675] ] }
LineString
Это линия точек. Структура JSON такая же, как и у MultiPoint, но поскольку это тип LinePoint, отдельные координаты рассматриваются как соединенная линия, а не точки, лежащие отдельно.
"geometry": { "type": "LineString", "coordinates": [ [80.2122116088867,13.113586344333864], [80.25959014892577,13.072121016365408], [80.29048919677733,13.114923819297273], [80.3207015991211,13.075799674224164], [80.33477783203125,13.112248862097216] ] }
MultiLineString
Как видно из названия, он используется для хранения более одной LineString в одной геометрии. Каждый элемент массива Coordinates похож на один массив LineString Coordinates.
"geometry":{"type": "MultiLineString", "coordinates" : [ [ [longitude,latitude], [longitude,latitude], [longitude,latitude] ], [ [longitude,latitude], [longitude,latitude], [longitude,latitude] ], [ [longitude,latitude], [longitude,latitude], [longitude,latitude] ], ]}
Polygon
Спецификация RFC определяет полигоны как линейные кольца. Линейное кольцо, это многоугольники — то есть любая замкнутая форма, да буквально любая форма.
Спецификация RFC также определяет, что многоугольники закрыты. Закрытая форма означает, что первая и последняя координаты будут одинаковыми.
Они могут быть использованы для хранения границ. Будь то граница страны, города, села или границы области.
"geometry": { "type": "Polygon", "coordinates": [ [ [78.44238281249999,22.62415215809042], [77.8436279296875,22.151795575397756], [78.486328125,21.764601405743978], [79.0521240234375,22.233175265402785], [78.44238281249999,22.62415215809042] ] ] }
MultiPolygon
К этому времени вы уже догадались, что, как и MultiPoint и MultiLine, MultiPolygon представляет собой набор полигонов. Вы можете использовать их для хранения информации о границах разных городов в штате.
Feature и FeatureCollection
Теперь самое интересное. До этого вы узнали, как хранить географические данные в различных структурах, таких как Points, Lines и Polygons. Но как хранить информацию об этих местах?
Правильный способ хранения географической информации — использовать Feature и FeatureCollection.
GeoJSON Feature и FeatureCollections сами по себе являются геометрией. Это своего рода описание геометрии, которая используется для хранения другой геометрии и свойств (информации) об этой геометрии.
Типичная Feature выглядит так
{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [-10.0,-10.0] }, "properties": { "temperature": "4C", "country": "IN", "somepropertyName": "Some description" } }
В приведенном выше GeoJSON геометрия может быть любого из типов, которые мы обсуждали ранее, например, Point, Line или Polygon, а Feature содержат данные и информацию об этой геометрии.
FeatureCollection
Как следует из названия, FeatureCollection GeoJSON содержит набор Features.
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [78.31054687499999,22.39071391683855] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [78.486328125,11.43695521614319] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [77.9150390625,27.176469131898898] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [75.673828125,19.766703551716976] } } ] }
Ресурсы
- RFC спецификация GeoJSON (https://tools.ietf.org/html/rfc7946)
- Интерактив с GeoJSON (https://geojson.io/)
- Лучшая библиотека JS для работами с картами (https://leafletjs.com/)