Đa giác và MultiPolygons phải tuân theo quy tắc bàn tay phải


17

http://geojsonlint.com/ Tôi gặp lỗi

 Polygons and MultiPolygons should follow the right-hand rule

Tôi đã sử dụng nó trong 3 năm qua mà không gặp vấn đề gì với tệp Geojson cũ của tôi. Bây giờ Geojsonlint thực thi quy tắc bàn tay phải, làm thế nào để khắc phục vấn đề.

Câu trả lời:


7

Kể từ tháng 8 năm 2016 GeoJSON hiện là một đặc điểm kỹ thuật chính thức của IETF . Và một số điều đã thay đổi từ thông số 2008 không chính thức cũ . Vì vậy, để có giá trị cho năm 2016, thông số đa giác của bạn PHẢI là vết thương bên tay phải.

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

Việc sử dụng PHẢI chỉ ra một yêu cầu tuyệt đối của đặc tả. Tuy nhiên, ngôn ngữ tiếp theo về việc không từ chối các cuộn dây khác là lạ và mở cho một số đối số - có lẽ các trình phân tích cú pháp nên chấp nhận và sửa các cuộn dây khác. Tôi nghĩ đây là điều khiến Geojsonlint (từ Geojsonhint) sử dụng từ này thay vì PHẢI trong thông điệp phản hồi của họ.

Vì vậy, tôi đồng ý với vị trí của Geojsonlint.com khi họ đặt ngay trên đầu trang của họ liên kết đến thông số kỹ thuật năm 2016. Đa giác của bạn là xấu theo thông số năm 2016. Nhưng họ vẫn ổn theo thông số năm 2008 không chính thức. Vì vậy, nếu bạn không muốn thay đổi cuộn dây của đa giác của mình, bạn sẽ cần phải chắc chắn bất kỳ linters hoặc trình phân tích cú pháp nào bạn sử dụng để tôn vinh thông số kỹ thuật cũ năm 2008 và không một ngày nào đó đột nhiên chuyển sang thông số chính thức mới.

Hoặc có lẽ bạn nên xem xét việc thay đổi cuộn dây đa giác của mình vì làm như vậy sẽ giúp bạn phù hợp với cả hai thông số kỹ thuật và định vị tốt hơn cho tương lai khi thông số năm 2008 mất dần.

Lưu ý rằng đối với tôi, thay đổi lớn nhất trong thông số kỹ thuật năm 2016 là sự hỗ trợ hoàn toàn cho các hệ thống tọa độ. Tôi đã có tất cả GeoJSON của mình trong NAD83 và sau đó phải lặng lẽ xóa nó vì bây giờ tất cả GeoJSON là WGS84. May mắn cho tôi đến từ Oracle Spatial, tất cả các đa giác của tôi đều là vết thương bên tay phải.


Đối với tôi sẽ là tốt nếu Geojsonlint có tùy chọn bỏ qua bài kiểm tra quanh co, hoặc báo cáo đó là một vấn đề riêng biệt. Đó là những gì đặc điểm kỹ thuật bằng cách nào đó được khuyến nghị là tốt.
dùng49584

4

Geojson cũ của tôi làm việc với google map, tờ rơi, openlayer, mapbox, bing map, v.v. Tuy nhiên, Geojsonlint.com không thể xác thực.

Tôi phải sử dụng một trang web khác để xác nhận: http://geojson.io


4

Đối với bất cứ ai tìm thấy điều này và tìm kiếm một công cụ để sửa chúng. GDALs ogr2ogr có thể lấy "2008" spec GeoJSON và viết ra trong chế độ tiêu chuẩn "RFC7946" (với đa giác theo quy tắc bàn tay phải để định hướng).

ogr2ogr -f GeoJSON -lco RFC7946=YES output.json input.json

hoặc để sử dụng trong các tập lệnh mà bạn muốn nhập và xuất GeoJSON dưới dạng chuỗi:

echo 'Your GeoJSON' | ogr2ogr -f GeoJSON -lco RFC7946=YES /vsistdout/ /vsistdin/



2

Điều này có thể được sửa rất dễ dàng trong Python bằng cách sử dụng geojson-rewind.

from geojson_rewind import rewind

rewoundGeoJSON = rewind(geoJSONString)
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.