Чи дійсно елемент елемента властивостей у geoJSON функціїCollection?


16

Чи дійсно мати елемент властивості з елементами elementCollection в якості батьків?

Це, на думку 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" повинен мати член з назвою "особливості". Значення, що відповідає "особливостям" - це масив. Кожен елемент масиву є об'єктом функції, як визначено вище.

Я думаю, це чітко означає, що якщо об’єкт має додаткових членів, це не робить його недійсним.

Об'єкти ecmascript дуже відкриті.

Так, так, ви можете мати елемент властивостей на верхньому рівні колекції функцій, але не сподівайтеся, що будь-які інструменти знають його там або копіюють його, ...


1
Добре Справедливо :) Але яке місце зберігати інформацію про саму колекцію замість функції?
стУр

У специфікації немає жодної.
Кальвін

Оскільки FeatureCollection є об'єктом першого класу, будь-які властивості будуть стосуватися колекції, а не будь-якої функції. Або додайте скільки завгодно, або додайте властивість "метаданих", значенням якої є карта.
Джуліан

Інший спосіб думати про це полягає в тому, що вам потрібно підклас FeatureCollection підклас для ваших потреб. Це дійсно метафора, а не побудова програмування, хоча, оскільки ECMAscript не мислить об'єкти так.
Джуліан

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

9

Коротка відповідь - ні - це неправильно мати propertiesелемент на FeatureCollectionоб'єкті:

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

Члени GeoJSON «геометрія» та «властивості» визначають об’єкт Feature. Об'єкти FeatureCollection та Geometry, ОБОВ'ЯЗКОВО НЕ повинні містити член "геометрії" або "властивостей".


З мого читання, формулювання цього мандату передбачає, що ви не можете назвати члена FeatureCollection, "properties" як це робить ОП, але це не заважає вам називати це чимось на кшталт "metadata"або "description". Я використовував декількох членів вищого рівня у веб-картах, які покладаються на geojson. Гарне оновлення, @Niel.
nronnei

1

Я теж думаю, що "властивості" верхнього рівня були б корисними, одна на рівні колекції функцій.

Але я вирішив зробити додаткову функцію для колекції функцій, заповнити властивості за бажанням та просто встановити об’єкт геометрії на NULL. З мого читання специфікації, це здається дозволеним і залишається в межах стандарту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.