Допустимо ли иметь элемент свойств в коллекции объектов geoJSON?


16

Допустимо ли иметь элемент свойств с featureCollection-element в качестве родителя?

Это, согласно geojson.org, действительно:

{ "type": "FeatureCollection",
  "features": [
              { "type": "Feature",
                "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
                "properties": {"prop0": "value0"}
              }
              ]
}

Но я не могу найти, является ли это действительным, или если это недействительно, чтобы иметь это:

{ "type": "FeatureCollection",
  "properties" : { "description" : "This is the geometry for..." }
  "features": [
              { "type": "Feature",
                "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
                "properties": {"prop0": "value0"}
              }
              ]
}

Согласно нижеследующему ответу, это недействительно, чтобы поместить его туда, но программы / скрипты не будут знать его там.

Итак, позвольте мне перефразировать вопрос: (Где) Можно ли поместить некоторую описательную информацию о недвижимости в целом?

Ответы:


10

2,3. Объекты коллекции объектов

Объект GeoJSON с типом «FeatureCollection» является объектом коллекции объектов.

Объект типа «FeatureCollection» должен иметь член с именем «features». Значение, соответствующее «функциям», является массивом. Каждый элемент в массиве является объектом-объектом, как определено выше.

Я думаю, это ясно означает, что если у объекта есть дополнительные члены, это не делает его недействительным.

Ecmascript объекты очень открыты.

Так что да, вы можете иметь элемент свойств на верхнем уровне коллекции объектов, но не ожидайте, что какие-либо инструменты узнают его там или скопируют ...


1
ОК Достаточно справедливо :) Но в каком месте хранится информация о самой коллекции вместо функции?
августа

Там нет ни одного в спецификации.
Кельвин

Поскольку FeatureCollection является объектом первого класса, любые свойства будут касаться коллекции, а не какой-либо функции. Либо добавьте столько, сколько хотите, или добавьте свойство «метаданные», значением которого является карта.
Джулиан

Еще один способ думать о том, что вам нужно подкласс FeatureCollection для ваших нужд. Это на самом деле метафора, а не программная конструкция, потому что ECMAscript не совсем так думает об объектах.
Джулиан

1
Спецификация позволяет иностранным членам в разделе 6.1. tools.ietf.org/html/draft-ietf-geojson-03#section-6 . Так что это законно, но поведение будет зависеть от приложения.
Intechecho

9

Краткий ответ - нет - недопустимо иметь propertiesэлемент на FeatureCollectionобъекте:

https://tools.ietf.org/html/rfc7946#section-7.1

Элементы GeoJSON "geometry" и "properties" определяют объект Feature. Объекты FeatureCollection и Geometry, соответственно, НЕ ДОЛЖНЫ содержать элемент «geometry» или «properties».


Из моего прочтения формулировка этого мандата гласит, что вы не можете назвать члена FeatureCollection, "properties" как это делает OP, но это не мешает вам называть его чем-то вроде "metadata"или "description". Я использовал несколько членов высшего уровня в веб-картах, которые полагаются на геойсон. Хорошее обновление, @Niel.
Нронней

1

Я также думаю, что «свойства» верхнего уровня были бы полезны, один на уровне коллекции объектов.

Но работа, которую я сделал, заключалась в том, чтобы сделать дополнительную функцию для коллекции объектов, заполнить свойства по желанию и просто установить для объекта геометрии значение NULL. Из моего прочтения спецификации это кажется разрешенным и остается в рамках стандарта.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.