Apakah valid untuk memiliki elemen properti di geoJSON featureCollection?

16

Apakah valid untuk memiliki elemen properti dengan elemen featureCollection sebagai induk?

Ini, menurut geojson.org valid:

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

Tetapi saya tidak dapat menemukan apakah ini valid atau tidak valid untuk memiliki ini:

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

Menurut jawaban di bawah ini tidak valid untuk meletakkannya di sana, tetapi program / skrip tidak akan tahu itu ada di sana.

Jadi, izinkan saya ulangi pertanyaannya: (Di mana) Apakah mungkin untuk memasukkan beberapa informasi deskriptif tentang properti secara total ??

stUrb
sumber

Jawaban:

10

2.3. Objek Koleksi Fitur

Objek GeoJSON dengan tipe "FeatureCollection" adalah objek kumpulan fitur.

Objek tipe "FeatureCollection" harus memiliki anggota dengan nama "fitur". Nilai yang terkait dengan "fitur" adalah array. Setiap elemen dalam array adalah objek fitur sebagaimana didefinisikan di atas.

Saya pikir ini jelas menyiratkan bahwa jika objek memiliki anggota tambahan yang tidak membuatnya tidak valid.

Objek ecmascript sangat terbuka.

Jadi ya, Anda dapat memiliki elemen properti di tingkat atas dari kumpulan fitur, tetapi jangan berharap ada alat untuk mengetahuinya, atau menyalinnya, ...

Julian
sumber
1
OK Cukup cukup :) Tapi apa tempat untuk menyimpan informasi tentang koleksi itu sendiri, bukan fitur?
stUrb
Tidak ada satu di spec.
Calvin
Karena FeatureCollection adalah objek kelas satu, properti apa pun akan mengenai koleksi, bukan fitur apa pun. Tambahkan sebanyak yang Anda suka, atau tambahkan properti "metadata" yang nilainya adalah peta.
Julian
Cara lain untuk berpikir tentang hal ini adalah Anda perlu FeatureCollection sub-kelas untuk kebutuhan Anda. Itu benar-benar sebuah metafora daripada konstruksi pemrograman di sini karena ECMAscript tidak memikirkan objek seperti itu.
Julian
1
Spesifikasi ini memungkinkan Anggota Asing di bagian 6.1. tools.ietf.org/html/draft-ietf-geojson-03#section-6 . Jadi itu legal, tetapi perilaku akan bergantung pada aplikasi.
intotecho
9

Jawaban singkatnya adalah tidak - tidak valid untuk memiliki propertieselemen pada FeatureCollectionobjek:

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

Anggota "geometri" dan "properti" GeoJSON menentukan objek Fitur. Obyek FeatureCollection dan Geometry, masing-masing, TIDAK HARUS mengandung anggota "geometri" atau "properti".

Neil
sumber
Dari bacaan saya, kata-kata pada mandat ini bahwa Anda tidak dapat memberi nama anggota FeatureCollection "properties" seperti OP, tetapi itu tidak menghalangi Anda untuk menyebutnya sesuatu yang lain seperti "metadata"atau "description". Saya telah menggunakan beberapa anggota tingkat atas di peta web yang mengandalkan geojson. Pembaruan bagus, @Niel.
nronnei
1

Saya juga berpikir bahwa 'properti' tingkat atas akan berguna, satu di tingkat pengumpulan fitur.

Tetapi pekerjaan di sekitar yang saya lakukan adalah membuat fitur tambahan untuk koleksi fitur, mengisi properti yang diinginkan, dan hanya mengatur objek geometri ke NULL. Dari saya membaca spec, ini tampaknya diperbolehkan dan tetap dalam standar.

Pman
sumber