Có hợp lệ để có một thành phần thuộc tính trong tính năng GeoJSONCollection không?


15

Có hợp lệ để có một phần tử thuộc tính với phần tử FeatureCollection làm cha không?

Đây là, theo Geojson.org hợp lệ:

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

Nhưng tôi không thể tìm thấy nó có hợp lệ hay không nếu nó không hợp lệ để có cái này:

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

Theo câu trả lời bên dưới, nó không có giá trị để đặt nó ở đó, nhưng các chương trình / kịch bản sẽ không biết nó ở đó.

Vì vậy, hãy để tôi viết lại câu hỏi: (Ở đâu) Có thể đặt một số thông tin mô tả về tài sản như một tổng số ??

Câu trả lời:


10

2.3. Đối tượng thu thập tính năng

Một đối tượng GeoJSON với loại "FeatureCollection" là một đối tượng thu thập tính năng.

Một đối tượng thuộc loại "FeatureCollection" phải có một thành viên có tên "tính năng". Giá trị tương ứng với "tính năng" là một mảng. Mỗi phần tử trong mảng là một đối tượng tính năng như được xác định ở trên.

Tôi nghĩ điều này rõ ràng ngụ ý rằng nếu đối tượng có thêm thành viên không làm cho nó không hợp lệ.

Đối tượng Ecmascript rất mở.

Vì vậy, có, bạn có thể có một yếu tố thuộc tính ở cấp cao nhất của bộ sưu tập tính năng, nhưng đừng mong đợi bất kỳ công cụ nào biết nó ở đó hoặc sao chép nó, ...


1
OK Đủ công bằng :) Nhưng đâu là nơi lưu trữ thông tin về bộ sưu tập thay vì tính năng này?
stUrb

Không có ai trong thông số kỹ thuật.
Calvin

Bởi vì FeatureCollection là một đối tượng hạng nhất, mọi thuộc tính sẽ thuộc về bộ sưu tập, không phải bất kỳ tính năng nào. Hoặc thêm bao nhiêu tùy thích hoặc thêm thuộc tính "siêu dữ liệu" có giá trị là bản đồ.
Julian

Một cách nghĩ khác về nó là bạn cần phân lớp FeatureCollection cho các nhu cầu của bạn. Đó thực sự là một phép ẩn dụ thay vì một cấu trúc lập trình ở đây bởi vì ECMAscript không nghĩ về các đối tượng theo cách đó.
Julian

1
Thông số kỹ thuật cho phép các thành viên nước ngoài trong phần 6.1. tools.ietf.org/html/draft-ietf-geojson-03#section-6 . Vì vậy, nó là hợp pháp, nhưng hành vi sẽ phụ thuộc vào ứng dụng.
intotecho

9

Câu trả lời ngắn gọn là không - không hợp lệ khi có một propertiesphần tử trên một FeatureCollectionđối tượng:

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

Các thành viên "hình học" và "thuộc tính" của GeoJSON xác định một đối tượng Feature. Các đối tượng FeatureCollection và Geometry tương ứng KHÔNG PHẢI chứa thành viên "hình học" hoặc "thuộc tính".


Theo cách đọc của tôi, từ ngữ về điều này bắt buộc bạn không thể đặt tên thành viên của FeatureCollection "properties" giống như OP, nhưng nó không ngăn cản bạn gọi nó là một cái gì đó khác như "metadata"hoặc "description". Tôi đã sử dụng một số thành viên cấp cao nhất trong bản đồ web dựa trên Geojson. Cập nhật tốt, @Niel.
nronnei

1

Tôi cũng nghĩ rằng một 'thuộc tính' cấp cao nhất sẽ hữu ích, một ở cấp độ bộ sưu tập tính năng.

Nhưng công việc xung quanh tôi đã làm là tạo ra một tính năng bổ sung cho bộ sưu tập tính năng, điền các thuộc tính như mong muốn và chỉ đặt đối tượng hình học thành NULL. Từ việc đọc thông số kỹ thuật của tôi, điều này dường như được cho phép và nằm trong tiêu chuẩn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.