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 – геометрия:
Работа с 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
GeoJSON Format
Что такое файл GEOJSON?
Файл GEOJSON содержит географические данные. Файловая структура GEOJSON основана на формате JSON. Файл может хранить информацию о местоположении (точках), линиях, многоугольниках или других простых типах объектов. Содержимое файла GEOJSON может представлять реальные объекты и местоположения, например, линия может представлять дорогу, линию передачи и т. Д.
Использование формата GEOJSON
В файлах GEOJSON нет необходимости хранить географические данные, такие как карты. Такие файлы иногда используются вместе с виртуальными объектами, например, картой сигнала GSM или навигационными точками. Данные, хранящиеся в файлах на основе JSON (включая файлы GEOJSON), можно легко передавать между приложениями.
Программы, которые поддерживают GEOJSON расширение файла
В следующем списке перечислены программы, совместимые с файлами GEOJSON, которые разделены на категории 2 в зависимости от операционной системы, в которой они доступны. Файлы с расширением GEOJSON, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл GEOJSON
Как открыть файл GEOJSON?
Проблемы с доступом к GEOJSON могут быть вызваны разными причинами. Что важно, все распространенные проблемы, связанные с файлами с расширением GEOJSON, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Получить GDAL

Шаг 2. Убедитесь, что у вас установлена последняя версия GDAL

Шаг 3. Настройте приложение по умолчанию для открытия GEOJSON файлов на GDAL
После установки GDAL (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия GEOJSON файлов. Следующий шаг не должен создавать проблем. Процедура проста и в значительной степени не зависит от системы
Процедура изменения программы по умолчанию в Windows
Процедура изменения программы по умолчанию в Mac OS
Шаг 4. Убедитесь, что файл GEOJSON заполнен и не содержит ошибок
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл GEOJSON действительным. Вероятно, файл поврежден и, следовательно, недоступен.
1. Проверьте GEOJSON файл на наличие вирусов или вредоносных программ.
Если файл заражен, вредоносная программа, находящаяся в файле GEOJSON, препятствует попыткам открыть его. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. Если сканер обнаружил, что файл GEOJSON небезопасен, действуйте в соответствии с инструкциями антивирусной программы для нейтрализации угрозы.
2. Проверьте, не поврежден ли файл
Если вы получили проблемный файл GEOJSON от третьего лица, попросите его предоставить вам еще одну копию. Возможно, файл был ошибочно скопирован, а данные потеряли целостность, что исключает доступ к файлу. Это может произойти, если процесс загрузки файла с расширением GEOJSON был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Убедитесь, что у вас есть соответствующие права доступа
Некоторые файлы требуют повышенных прав доступа для их открытия. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Убедитесь, что в системе достаточно ресурсов для запуска GDAL
Если в системе недостаточно ресурсов для открытия файлов GEOJSON, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом GeoJSON Format. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами GEOJSON, влияющими на более старые версии данного программного обеспечения.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла GEOJSON мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле 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.
Импорт объектов карты
Вы можете импортировать объекты из файла одного из нескольких форматов:
Создайте новую карту, предназначенную для импорта данных из файла (импорт данных возможен только на новую карту).
Для этого нажмите кнопку К импорту в списке карт:
Откроется окно Импорт :
Нажмите кнопку Выбрать файл и в открывшемся стандартном окне ─ выберите файл, из которого будут импортироваться данные (единовременный импорт данных возможен только из одного файла).
Содержимое выбранного файла будет автоматически проверено на соответствие Внимание. \\n
Существуют определенные ограничения на создание объектов:
На карту может быть добавлено не более 10 000 объектов (включая и метки, и линии, и многоугольники).
Одна линия или многоугольник могут включать не более 1 000 вершин.
Если число вершин объекта превышает эту величину, объект можно автоматически упростить: удалить некоторые вершины таким образом, чтобы максимально сохранить общий вид объекта.
По завершении процедуры импорта данные из выбранного файла отобразятся на созданной вами карте и могут быть отредактированы и сохранены.
При импорте данных из файла формата KML на карту добавляются:
метки (координаты, описание, подпись, цвет);
линии (все настройки, которые можно менять в Конструкторе);
многоугольники (все настройки, которые можно менять в Конструкторе).
Если в метаданных файла хранится название и описание карты, они также будут импортированы.\n
Цвет объектов приводится к наиболее близкому из поддерживаемых в Конструкторе.
Пример результатов импорта данных из файла формата KML (на английском, но использоваться могут и другие языки):
Пример файла можно скачать, перейдя по ссылке: Пример файла KML.
О формате KML см. также в разделе Экспорт объектов карты.
При импорте данных из файла формата GPX на карту добавляются метки (координаты, описание, подпись), а также объекты routes и tracks.
Если в метаданных файла хранится название и описание карты, они также будут импортированы.\n
Пример результатов импорта данных из файла формата GPX (на английском, но использоваться могут и другие языки):
Пример файла можно скачать, перейдя по ссылке: Пример файла GPX.
О формате GPX см. также в разделе Экспорт объектов карты.
GeoJSON
При импорте данных из файла формата GeoJSON на карту добавляются метки (координаты, описание, подпись, номер, цвет), линии (все настройки, которые можно менять в Конструкторе) и многоугольники (все настройки, которые можно менять в Конструкторе).
Если в исходном файле были группы ─ они не сохранятся.
Цвет объектов приводится к наиболее близкому из поддерживаемых в Конструкторе. Пример результатов импорта данных из файла формата GeoJSON (на английском, но использоваться могут и другие языки):
Пример файла можно скачать, перейдя по ссылке: Пример файла GeoJSON.
О формате GeoJSON см. также в разделе Экспорт объектов карты.
При импорте данных из файла формата CSV на карту добавляются только метки (координаты, описание, подпись, номер).
Файл, используемый для импорта, должен соответствовать шаблону:
Разделителем может быть запятая, точка с запятой или знак табуляции.
Поля «Широта» и «Долгота» обязательны к заполнению. Остальные поля можно оставить пустыми.
Координаты задаются в формате десятичной дроби, где целая часть отделяется от дробной точкой.
Текстовые значения подписи и описания желательно заключать в кавычки.
Тогда символ, совпадающий с разделителем файла, будет игнорироваться. Если текст полей (Описание и Подпись) содержит смысловые кавычки, то их надо экранировать тем же символом.
Например: если в подписи должно быть: Магазин \»Мир семян\», то в файл значение записывается как \»Магазин \»\»Мир семян\»\»\».
Пример записи файла, подготовленного для импорта:
51.530216469900985,-0.12356737902929697,\»при открытии «Кингс-Кросс»\»,\»Кингс-Кросс Сент-Панкрасс\»,\»162\».
Шаблон файла можно скачать, перейдя по ссылке: Шаблон файла CSV.
При импорте данных из файла формата XLSX на карту добавляются только метки (координаты, описание, подпись, номер).
Файл, используемый для импорта, должен соответствовать шаблону:
Поля «Широта» и «Долгота» обязательны к заполнению. Остальные поля можно оставить пустыми.
Координаты задаются в формате десятичной дроби, где целая часть отделяется от дробной точкой.
В противном случае MS Excel интерпретирует запись как формулу, что приведет к ошибке.
Шаблон файла можно скачать, перейдя по ссылке: Шаблон файла XLSX.
Например, при импорте данных из файла, содержащего записи (на английском, но использоваться могут и другие языки):
Мы получим карту вида:
Импорт объектов карты
Вы можете импортировать объекты из файла одного из нескольких форматов:
Создайте новую карту, предназначенную для импорта данных из файла (импорт данных возможен только на новую карту).
Для этого нажмите кнопку К импорту в списке карт:
Откроется окно Импорт :
Нажмите кнопку Выбрать файл и в открывшемся стандартном окне ─ выберите файл, из которого будут импортироваться данные (единовременный импорт данных возможен только из одного файла).
Содержимое выбранного файла будет автоматически проверено на соответствие Внимание. \n
Существуют определенные ограничения на создание объектов:
На карту может быть добавлено не более 10 000 объектов (включая и метки, и линии, и многоугольники).
Одна линия или многоугольник могут включать не более 1 000 вершин.
Если число вершин объекта превышает эту величину, объект можно автоматически упростить: удалить некоторые вершины таким образом, чтобы максимально сохранить общий вид объекта.
По завершении процедуры импорта данные из выбранного файла отобразятся на созданной вами карте и могут быть отредактированы и сохранены.
При импорте данных из файла формата KML на карту добавляются:
метки (координаты, описание, подпись, цвет);
линии (все настройки, которые можно менять в Конструкторе);
многоугольники (все настройки, которые можно менять в Конструкторе).
Если в метаданных файла хранится название и описание карты, они также будут импортированы.
Цвет объектов приводится к наиболее близкому из поддерживаемых в Конструкторе.
Пример результатов импорта данных из файла формата KML (на английском, но использоваться могут и другие языки):
Пример файла можно скачать, перейдя по ссылке: Пример файла KML.
О формате KML см. также в разделе Экспорт объектов карты.
При импорте данных из файла формата GPX на карту добавляются метки (координаты, описание, подпись), а также объекты routes и tracks.
Если в метаданных файла хранится название и описание карты, они также будут импортированы.
Пример результатов импорта данных из файла формата GPX (на английском, но использоваться могут и другие языки):
Пример файла можно скачать, перейдя по ссылке: Пример файла GPX.
О формате GPX см. также в разделе Экспорт объектов карты.
GeoJSON
При импорте данных из файла формата GeoJSON на карту добавляются метки (координаты, описание, подпись, номер, цвет), линии (все настройки, которые можно менять в Конструкторе) и многоугольники (все настройки, которые можно менять в Конструкторе).
Если в исходном файле были группы ─ они не сохранятся.
Цвет объектов приводится к наиболее близкому из поддерживаемых в Конструкторе. Пример результатов импорта данных из файла формата GeoJSON (на английском, но использоваться могут и другие языки):
Пример файла можно скачать, перейдя по ссылке: Пример файла GeoJSON.
О формате GeoJSON см. также в разделе Экспорт объектов карты.
При импорте данных из файла формата CSV на карту добавляются только метки (координаты, описание, подпись, номер).
Файл, используемый для импорта, должен соответствовать шаблону:
Разделителем может быть запятая, точка с запятой или знак табуляции.










