Формат geojson что это
Утилита Google Maps Android GeoJSON
Введение
Как добавить слой GeoJsonLayer на карту
Чтобы добавить слой GeoJson на карту, сначала необходимо создать экземпляр класса GeoJsonLayer. Это можно сделать двумя способами.
Для импорта данных из объекта JSONObject вам понадобятся:
Kotlin
Для импорта данных из локального файла GeoJSON вам понадобятся:
Kotlin
Kotlin
Как удалить слой GeoJsonLayer
Предположим, что вы добавили этот слой:
Kotlin
Kotlin
Как добавить или удалить объект GeoJsonFeature
Географический элемент в GeoJSON имеет тип feature. Он содержит геометрические данные и элемент свойства, а также может содержать ограничивающий прямоугольник или идентификатор.
Предположим, что вы создали географический объект, который содержит точку с координатами 0, 0, имеет одну запись в свойствах и не имеет ограничивающего прямоугольника.
Kotlin
Чтобы добавить этот географический объект в слой, вызовите метод addFeature() и передайте ему этот объект.
Kotlin
Чтобы удалить объект после того, как он был добавлен в слой, вызовите метод removeFeature() и передайте ему этот объект.
Kotlin
Доступ к элементам GeoJsonFeature и их свойства
Kotlin
С помощью методов hasProperty() и getProperty() в сочетании с методом getFeatures() вы можете проверить, есть ли у каждого сохраненного объекта определенное свойство, и получить к нему доступ, если оно существует.
Kotlin
События кликов по фигурам GeoJSON
С помощью метода GeoJsonLayer.OnFeatureClickListener() можно прослушивать события кликов по геометрическим объектам на карте. В приведенном ниже примере кода реализовано сохранение названия объекта на карте при клике по этому объекту.
Kotlin
Как настроить стиль для GeoJsonLayer и GeoJsonFeature
Для слоя GeoJsonLayer можно выбрать стили по умолчанию или определить стиль для его отдельных элементов.
Стили по умолчанию
В слое GeoJsonLayer можно устанавливать стили по умолчанию для любых точек, ломаных линий и многоугольников, которые добавляются к слою. Стили по умолчанию применяются только в том случае, если вы не установили стиль для каких-либо геометрических компонентов элемента. Все изменения, выполненные для стиля по умолчанию, будут отражены во всех элементах, которые используют этот стиль.
Ниже приведены инструкции по настройке стиля по умолчанию.
Например, в приведенном ниже примере кода показано, как изменить стиль по умолчанию для точек. В результате точки станут перетаскиваемыми и у них появятся название и текстовый фрагмент.
Kotlin
Стили для конкретных объектов GeoJsonFeature
Kotlin
Демонстрационное приложение
Пример импорта файла GeoJSON из указанного URL и создания слоя с помощью этого файла представлен в коде GeoJsonDemoActivity демонстрационного приложения из библиотеки утилит. В руководстве по настройке рассказывается, как запустить демонстрационное приложение.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Работа с GeoJSON в среде Node.js: практическое знакомство
GeoJSON — это стандартизованный формат представления географических структур данных, основанный на JSON. Существует множество замечательных инструментов для визуализации GeoJSON-данных. При этом данный формат хорош не только в деле хранения координат неких точек. Он, помимо точек, позволяет описывать и другие объекты: линии, полигоны, коллекции объектов.
Точки — объекты Point
Эта точка представляет парк в Майами-Бич, штат Флорида, США. Визуализировать эту точку на карте легко можно с помощью проекта geojson.io.
Типичный пример использования точек GeoJSON — геокодирование — преобразование адресов наподобие «429 Lenox Ave, Miami Beach, FL» в координаты, выраженные долготой и широтой. Например, мы пользуемся API геокодирования Mapbox. Для обращения к этому API нужно выполнить HTTP-запрос к следующей конечной точке:
В ответ придёт такой код:
Если присмотреться к ответу, то окажется, что features[0].geometry в JSON-коде — это GeoJSON-точка:
API статических карт Mapbox — это отличный инструмент для вывода точек на картах. Ниже показан скрипт, который декодирует переданную ему строку и возвращает URL на изображение, которое показывает первый результат поиска.
Пример визуализации точки на карте
Линии — объекты LineString
Визуализация объекта LineString на карте
Линии, при использовании API навигации наподобие Mapbox, применяются для визуализации поэтапного пути между двумя точками. Один из способов представления автомобильного пути из точки [-80.139145,25.77409] (офис WeWork в Майами-Бич) до точки [-80.2752743,25.7938434] (международный аэропорт Майами) заключается в использовании GeoJSON-объекта LineString :
Путь из одной точки в другую
Полигоны — объекты Polygon
Визуализация полигона на карте
GeoJSON-полигоны могут использоваться для описания очень сложных форм. Например, некоторое время в Uber использовался единственный GeoJSON-полигон, включающий в себя все 3 основных аэропорта области залива Сан-Франциско.
Правда, надо отметить, GeoJSON-полигоны не могут представлять окружности и эллипсы.
Для чего используются полигоны? Обычно — для описания геозон. Например, представьте себе, что работаете в Uber или в Lyft. Вам нужно показать пользователям, заказывающим поездки из аэропорта, особый экран. Для того чтобы это сделать, нужно будет узнать, находится ли точка, из которой заказывают поездку, в пределах полигона, описывающего аэропорт (или несколько аэропортов как на предыдущем рисунке).
Один из способов проверки нахождения GeoJSON-точки в пределах полигона заключается в использовании npm-модуля Turf. Модуль @turf/boolean-point-in-polygon позволяет узнать о том, находится ли точка в пределах полигона.
Итоги
GeoJSON — это не только хранение координат точек. В этом формате можно хранить пути. С использованием GeoJSON-данных можно выяснить момент попадания пользователя в геозону. А если нужно, то GeoJSON даже позволяет создавать изохроны. Вокруг формата GeoJSON сформировался набор отличных инструментов. Так, ресурс geojson.io позволяет выполнять простые визуализации координат на карте. Проект Mapbox даёт доступ к продвинутым географическим API. Пакет Turf позволяет выполнять геопространственные вычисления в браузерах и в среде Node.js.
MongoDB поддерживает запросы, связанные с географическими данными. И если вы храните географические координаты точек в виде пар значений, не пользуясь форматом GeoJSON, это значит, что вы упускаете возможность воспользоваться некоторыми замечательными инструментами разработки.
Уважаемые читатели! Пользуетесь ли вы форматом GeoJSON?
Вы знаете что такое 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 выглядит примерно так.
Терминологии
Координаты
Отдельная точка на карте называется координатой.
Геометрия (geometry)
Думайте о геометрии как о структуре данных. Геометрия определяет, в какой структуре хранятся координаты.
Существуют предварительно определенные типы геометрии с учетом регистра, а именно «Point», «Line», «Polygon» и другие. Мы рассмотрим их одного за другим.
Типичная геометрия выглядит ниже
Каждая геометрия должна иметь свойство с названием «type», значение которого должно быть одним из типов GeoJSON, упомянутых в GeoJSON RFC (https://tools.ietf.org/html/rfc7946#page-6).
Есть некоторые типы геометрии, которые используются для хранения других типов геометрии. Это «Feature» и «FeatureCollection», о которых мы поговорим ниже.
Типы геометрии
Point
Точка — это отдельная точка или маркер на карте. Его поле geometry содержит единственную координату. Это может быть использовано для хранения отдельного места, например магазина.
MultiPoint
Как вы уже догадались по названию, геометрия MultiPoint используется для хранения нескольких точек координат в одной геометрии. Каждый элемент в массиве координат сам по себе является координатой. Это может быть использовано для хранения списка любимых мест.
LineString
Это линия точек. Структура JSON такая же, как и у MultiPoint, но поскольку это тип LinePoint, отдельные координаты рассматриваются как соединенная линия, а не точки, лежащие отдельно.
MultiLineString
Как видно из названия, он используется для хранения более одной LineString в одной геометрии. Каждый элемент массива Coordinates похож на один массив LineString Coordinates.
Polygon
Спецификация RFC определяет полигоны как линейные кольца. Линейное кольцо, это многоугольники — то есть любая замкнутая форма, да буквально любая форма.
Спецификация RFC также определяет, что многоугольники закрыты. Закрытая форма означает, что первая и последняя координаты будут одинаковыми.
Они могут быть использованы для хранения границ. Будь то граница страны, города, села или границы области.
MultiPolygon
К этому времени вы уже догадались, что, как и MultiPoint и MultiLine, MultiPolygon представляет собой набор полигонов. Вы можете использовать их для хранения информации о границах разных городов в штате.
Feature и FeatureCollection
Теперь самое интересное. До этого вы узнали, как хранить географические данные в различных структурах, таких как Points, Lines и Polygons. Но как хранить информацию об этих местах?
Правильный способ хранения географической информации — использовать Feature и FeatureCollection.
GeoJSON Feature и FeatureCollections сами по себе являются геометрией. Это своего рода описание геометрии, которая используется для хранения другой геометрии и свойств (информации) об этой геометрии.
Типичная Feature выглядит так
В приведенном выше GeoJSON геометрия может быть любого из типов, которые мы обсуждали ранее, например, Point, Line или Polygon, а Feature содержат данные и информацию об этой геометрии.
FeatureCollection
Как следует из названия, FeatureCollection GeoJSON содержит набор Features.
This document is obsolete. Please see RFC 7946 instead.
Authors | Howard Butler (Hobu Inc.), Martin Daly (Cadcorp), Allan Doyle (MIT), Sean Gillies (UNC-Chapel Hill), Tim Schaub (OpenGeo), Christopher Schmidt (MetaCarta) |
---|---|
Revision | 1.0 |
Date | 16 June 2008 |
Abstract | GeoJSON is a geospatial data interchange format based on JavaScript Object Notation (JSON). |
Copyright | Copyright © 2008 by the Authors. This work is licensed under a Creative Commons Attribution 3.0 United States License. |
Status | Obsolete. Replaced by RFC 7946. |
1. Introduction
GeoJSON is a format for encoding a variety of geographic data structures. A GeoJSON object may represent a geometry, a feature, or a collection of features. GeoJSON supports the following geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection. Features in GeoJSON contain a geometry object and additional properties, and a feature collection represents a list of features.
1.1. Examples
A GeoJSON feature collection:
1.2. Definitions
JavaScript Object Notation (JSON), and the terms object, name, value, array, and number, are defined in IETF RFC 4627.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in IETF RFC 2119.
2. GeoJSON Objects
GeoJSON always consists of a single object. This object (referred to as the GeoJSON object below) represents a geometry, feature, or collection of features.
The GeoJSON object may have any number of members (name/value pairs).
A GeoJSON object may have an optional «crs» member, the value of which must be a coordinate reference system object (see 3. Coordinate Reference System Objects).
A GeoJSON object may have a «bbox» member, the value of which must be a bounding box array (see 4. Bounding Boxes).
2.1 Geometry Objects
2.1.1. Positions
A position is the fundamental geometry construct. The «coordinates» member of a geometry object is composed of one position (in the case of a Point geometry), an array of positions (LineString or MultiPoint geometries), an array of arrays of positions (Polygons, MultiLineStrings), or a multidimensional array of positions (MultiPolygon).
A position is represented by an array of numbers. There must be at least two elements, and may be more. The order of elements must follow x, y, z order (easting, northing, altitude for coordinates in a projected coordinate reference system, or longitude, latitude, altitude for coordinates in a geographic coordinate reference system). Any number of additional elements are allowed – interpretation and meaning of additional elements is beyond the scope of this specification.
Examples of positions and geometries are provided in Appendix A. Geometry Examples.
2.1.2. Point
2.1.3. MultiPoint
2.1.4. LineString
A LinearRing is closed LineString with 4 or more positions. The first and last positions are equivalent (they represent equivalent points). Though a LinearRing is not explicitly represented as a GeoJSON geometry type, it is referred to in the Polygon geometry type definition.
2.1.5. MultiLineString
2.1.6. Polygon
2.1.7. MultiPolygon
2.1.8 Geometry Collection
A GeoJSON object with type «GeometryCollection» is a geometry object which represents a collection of geometry objects.
2.2. Feature Objects
A GeoJSON object with the type «Feature» is a feature object.
2.3. Feature Collection Objects
A GeoJSON object with the type «FeatureCollection» is a feature collection object.
3. Coordinate Reference System Objects
The coordinate reference system (CRS) of a GeoJSON object is determined by its «crs» member (referred to as the CRS object below). If an object has no crs member, then its parent or grandparent object’s crs member may be acquired. If no crs member can be so acquired, the default CRS shall apply to the GeoJSON object.
The default CRS is a geographic coordinate reference system, using the WGS84 datum, and with longitude and latitude units of decimal degrees.
The value of a member named «crs» must be a JSON object (referred to as the CRS object below) or JSON null. If the value of CRS is null, no CRS can be assumed.
The crs member should be on the top-level GeoJSON object in a hierarchy (in feature collection, feature, geometry order) and should not be repeated or overridden on children or grandchildren of the object.
The value of the type member must be a string, indicating the type of CRS object.
The value of the properties member must be an object.
CRS shall not change coordinate ordering (see 2.1.1. Positions).
3.1. Named CRS
3.2. Linked CRS
3.2.1. Link Objects
The value of the required «href» member must be a dereferenceable URI.
Relative links may be used to direct processors to CRS parameters in an auxiliary file:
4. Bounding Boxes
Example of a bbox member on a feature:
Example of a bbox member on a feature collection:
Appendix A. Geometry Examples
Each of the examples below represents a complete GeoJSON object. Note that unquoted whitespace is not significant in JSON. Whitespace is used in the examples to help illustrate the data structures, but is not required.
Point
Point coordinates are in x, y order (easting, northing for projected coordinates, longitude, latitude for geographic coordinates):
LineString
Coordinates of LineString are an array of positions (see 2.1.1. Positions):
Polygon
Coordinates of a Polygon are an array of LinearRing coordinate arrays. The first element in the array represents the exterior ring. Any subsequent elements represent interior rings (or holes).
MultiPoint
Coordinates of a MultiPoint are an array of positions:
MultiLineString
Coordinates of a MultiLineString are an array of LineString coordinate arrays:
MultiPolygon
Coordinates of a MultiPolygon are an array of Polygon coordinate arrays:
GeometryCollection
Each element in the geometries array of a GeometryCollection is one of the geometry objects described above:
GIS-LAB
Географические информационные системы и дистанционное зондирование
Спецификация формата GeoJSON
Перевод спецификации формата GeoJSON.
Авторы
Howard Butler (Hobu Inc.), Martin Daly (Cadcorp), Allan Doyle (MIT), Sean Gillies (UNC-Chapel Hill), Tim Schaub (OpenGeo), Christopher Schmidt (MetaCarta)
Версия
Копирайт
Copyright © 2008 by the Authors. This work is licensed under a Creative Commons Attribution 3.0 United States License
Кратко
Перевод
Рыков Д.А., а также участники форума, участвовашие в редактировании перевода: Дубинин М.Ю, Mavka, gamm
Ссылка
Оглавление
1. Введение
Примечание переводчика: в GeoJSON существует иерархия объектов вида GeoJSON Object => feature collection => feature => geometry. Чтобы в дальнейшем избежать путаницы в терминах, условимся называть GeoJSON Object – объект GeoJSON, feature collection – коллекция элементарных объектов, feature – элементарный объект, geometry – геометрия.
Завершенная структура данных GeoJSON – это всегда объект (в терминах JSON). В GeoJSON объект состоит из набора пар ключ/значение, также называемых свойствами. Имя каждого свойства – строка. Значение свойства может представлять собой строку, число, объект, массив или один из литералов: «true», «false» и «null». Массив состоит из элементов, где каждый элемент может принимать одно из значений, описанных выше.
1.1 Примеры
Коллекция элементарных объектов GeoJSON:
1.2 Определения
2. Объекты GeoJSON
GeoJSON всегда представляет собой единственную сущность: геометрию, элементарный объект или коллекцию элементарных объектов.
2.1 Геометрия
Геометрия – это объект GeoJSON, для которого в качестве значения свойства «type» используется одна из строк: «Point», «MultiPoint», «LineString», «MultiLineString», «Polygon», «MultiPolygon» или «GeometryCollection».
Все геометрии, тип которых отличен от «Geometry Collection», должны иметь свойство «coordinates». Значение данного свойства всегда представляет собой массив. Структура элементов массива определяется типом геометрии.
2.1.1 Координаты
Координаты – фундаментальная геометрическая концепция. Свойство «coordinates» объекта геометрия состоит из пары/триплета координат (в случае геометрии типа «Point»), массива координат (объекты типа «LineString» или «MultiPoint»), массива массивов координат (объекты типа «Polygons», «MultiLineStrings») или многомерного массива координат (объекты типа «MultiPolygon»).
Примеры координат и объектов геометрия приведены в Приложении A. Примеры геометрий.
2.1.2 Point
Для объектов типа «Point» свойство «coordinates» должно содержать одну пару/триплет координат.
2.1.3 MultiPoint
Для объектов типа «MultiPoint» свойство «coordinates» должно содержать массив пар/триплетов координат.
2.1.4 LineString
2.1.5 MultiLineString
Для объектов типа «MultiLineString» свойство «coordinates» должно содержать массив массивов пар/триплетов координат «LineString».
2.1.6 Polygon
Для объектов типа «Polygon» свойство «coordinates» должно содержать массив массивов пар/триплетов координат «LinearRing». Для полигонов с несколькими кольцами первым должно идти описание внешнего кольца и только затем внутренних, или дырок.
2.1.7 MultiPolygon
Для объектов типа «MultiPolygon» свойство «coordinates» должно содержать массив массивов пар/триплетов координат «Polygon».
2.1.8 GeometryCollection
2.2 Элементарный объект
2.3 Коллекция элементарных объектов
3. Объекты системы координат
Система координат (CRS) объекта GeoJSON определяется значением свойства «crs» (далее по тексту – объект CRS). Если объект GeoJSON не имеет свойства «crs», оно может быть наследовано от родительского или прародительского объекта. Если значение «crs» не может быть определено, то к GeoJSON объекту применяется значение CRS по умолчанию.
3.1 Именование систем координат
Система координат может быть описана путём указания имени. В этом случае значение свойства «type» должно содержать строку «name». Значение свойства «properties» должно представлять объект, содержащий свойство «name». Значением свойства «name» должна быть строка, определяющая систему координат. Предпочтительней использовать идентификаторы проекций OGC CRS URN вместо таких идентификаторов, как «EPSG:4326».
3.2 Ссылки на системы координат
Параметры объекта CRS могут быть получены по сети. В этом случае значение свойства «type» должно быть «link», а свойство «properties» представлять собой объект Link (см. 3.2.1 Объекты Link).
3.2.1 Объекты Link
Объект Link имеет одно обязательное свойство: «href» и одно опциональное: «type». Значение свойства «href» должно представлять собой разрешимый URI. Значение опционального свойства «type» должно быть строкой, описывающей формат представления системы координат, предоставляемой по URI. Предлагаемые значения: «proj4», «ogcwkt», «esriwkt», но могут использоваться и другие значения.
Относительные ссылки можно использовать для непосредственного доступа к параметрам системы координат, хранящимся во вспомогательном файле:
4. Ограничивающие прямоугольники
Чтобы включить информацию о диапазоне координат для геометрий, элементарных объектов и коллекций элементарных объектов используется свойство «bbox» (ограничивающий прямоугольник) объекта GeoJSON. Значение данного свойства должно быть массивом размерности 2*n, где n – размерность входящих в объект геометрий и содержать минимальные и максимальные значения координат всех координатных осей. Порядок осей при описании ограничивающего прямоугольника соответствует порядку осей, используемых при описании геометрий. Кроме того, предполагается, что система координат ограничивающего прямоугольника соответствует системе координат объекта GeoJSON, свойством которого она является.
Пример свойства «bbox» элементарного объекта:
Пример свойства «bbox» коллекции элементарных объектов:
Приложение А. Примеры геометрий
Каждый из приведенных далее примеров представляет собой законченный GeoJSON объект. Отметим, что не обрамленные в кавычки пробелы в JSON не принципиальны. Пробелы использованы в примерах для наглядности представления структуры данных и не являются обязательными.
Point
Координаты объекта Point идут в порядке x, y (смещение на восток, смещение на север для прямоугольных систем координат и долгота, широта для географических системы координат):
LineString
Координаты LineString – массив пар/триплетов координат (см. 2.1.1. Координаты):
Polygon
Координаты Polygon – массив массивов пар/триплетов координат LinearRing. Первый элемент массива описывает внешнее кольцо. Последующие элементы описывают внутренние кольца (дырки).
MultiPoint
Координаты MultiPoint – массив пар/триплетов координат:
MultiLineString
Координаты MultiLinestring – массив массивов пар/триплетов координат LineString:
MultiPolygon
Координаты MultiPolygon – массив массивов пар/триплетов координат Polygon:
GeometryCollection
Каждый элемент в массиве GeometryCollection – геометрия: