Перевод: 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 ]
Думайте о геометрии как о структуре данных. Геометрия определяет, в какой структуре хранятся координаты.
Существуют предварительно определенные типы геометрии с учетом регистра, а именно «Point», «Line», «Polygon» и другие. Мы рассмотрим их одного за другим.
Типичная геометрия выглядит ниже
"geometry": { "type": "Point", "coordinates": [longitude,latitude] }
Каждая геометрия должна иметь свойство с названием «type», значение которого должно быть одним из типов GeoJSON, упомянутых в GeoJSON RFC (https://tools.ietf.org/html/rfc7946#page-6).
Есть некоторые типы геометрии, которые используются для хранения других типов геометрии. Это «Feature» и «FeatureCollection», о которых мы поговорим ниже.
Точка — это отдельная точка или маркер на карте. Его поле geometry содержит единственную координату. Это может быть использовано для хранения отдельного места, например магазина.
"geometry": { "type": "Point", "coordinates": [ 78.4918212890625, 22.304343762932216 ] }
Как вы уже догадались по названию, геометрия MultiPoint используется для хранения нескольких точек координат в одной геометрии. Каждый элемент в массиве координат сам по себе является координатой. Это может быть использовано для хранения списка любимых мест.
{ "type": "MultiPoint", "coordinates": [ [80.26951432228088,13.09223800602329], [80.27061939239502,13.091631907724683], [80.2714991569519,13.09260375427521], [80.27050137519836,13.093241199930675] ] }
Это линия точек. Структура 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] ] }
Как видно из названия, он используется для хранения более одной 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] ], ]}
Спецификация 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] ] ] }
К этому времени вы уже догадались, что, как и MultiPoint и MultiLine, MultiPolygon представляет собой набор полигонов. Вы можете использовать их для хранения информации о границах разных городов в штате.
Теперь самое интересное. До этого вы узнали, как хранить географические данные в различных структурах, таких как 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 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] } } ] }
Краткий перевод: https://vuejs.org/guide/components/v-model.html Основное использование v-model используется для реализации двусторонней привязки в компоненте. Начиная с Vue…
Сегодня мы рады объявить о выпуске Vue 3.4 «🏀 Slam Dunk»! Этот выпуск включает в…
Vue.js — это универсальный и адаптируемый фреймворк. Благодаря своей отличительной архитектуре и системе реактивности Vue…
Недавно, у меня истек сертификат и пришлось заказывать новый и затем устанавливать на хостинг с…
Каким бы ни было ваше мнение о JavaScript, но всем известно, что работа с датами…
Все, кто следит за последними событиями в мире адаптивного дизайна, согласятся, что введение контейнерных запросов…