簡體   English   中英

是否可以使用 JavaScript 確定 GeoJSON 點是否在 GeoJSON 多邊形內?

[英]Is it possible to determine if a GeoJSON point is inside a GeoJSON polygon using JavasScript?

是否可以僅使用 JavaScript(通過 d3、topojson 或任何其他方式)確定給定經緯度的 GeoJSON 點是否位於給定的 GeoJSON 多邊形內?

例如,我可以根據此處的教程繪制顯示英國國家/地區的地圖。

然后我有一些具有坐標但沒有指示它們位於哪個國家的點。

我想顯示每個國家的總點數。

我可以在瀏覽器中找出哪個國家/地區包含每個點,還是需要使用 PostGIS 或類似工具在服務器上預處理我的點數據?

似乎d3已涵蓋: https : //github.com/d3/d3-geo#geoContains

d3.geoContains(對象,點)

當且僅當指定的 GeoJSON 對象包含指定的點時返回 true,如果對象不包含該點,則返回 false。 該點必須指定為以度為單位的二元素數組 [longitude, latitude]。 對於點和多點幾何,使用精確測試; 對於 Sphere,始終返回 true; 對於其他幾何圖形,應用 epsilon 閾值。

如果您需要在給定的 GeoJSON 上多次執行此檢查,則擴展@thedude答案,您還可以使用geojson-lookup

Turf.js提供了一個叫做boolean-point-in-polygon的函數

例如:

var pt = turf.point([-77, 44]);

var poly = turf.polygon([[
  [-81, 41],
  [-81, 47],
  [-72, 47],
  [-72, 41],
  [-81, 41]
]]);

turf.booleanPointInPolygon(pt, poly);
//= true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM