web-dev-qa-db-fra.com

Est-il possible de déterminer si un point GeoJSON se trouve à l'intérieur d'un polygone GeoJSON en utilisant JavasScript?

Est-il possible de déterminer si un point GeoJSON à un lat, lon donné se trouve dans un polygone GeoJSON donné en utilisant uniquement JavaScript (soit via d3, topojson ou toute autre manière)?

Par exemple, je peux dessiner une carte montrant les pays du Royaume-Uni sur la base du tutoriel ici .

J'ai ensuite quelques points qui ont des coordonnées mais aucune indication quant au pays dans lequel ils se trouvent.

Je voudrais afficher un nombre total de points pour chaque pays.

Puis-je déterminer quel pays contient chaque point dans le navigateur, ou dois-je prétraiter mes données de point sur le serveur à l'aide de PostGIS ou similaire?

21
user5325596

Semble être d3 vous a couvert: https://github.com/d3/d3-geo#geoContains

d3.geoContains (objet, point)

Renvoie true si et seulement si l'objet GeoJSON spécifié contient le point spécifié, ou false si l'objet ne contient pas le point. Le point doit être spécifié comme un tableau à deux éléments [longitude, latitude] en degrés. Pour les géométries Point et MultiPoint, un test exact est utilisé; pour une Sphère, true est toujours retourné; pour les autres géométries, un seuil epsilon est appliqué.

13
thedude

En développant les réponses @ thedude , vous pouvez également utiliser geojson-lookup si vous devez effectuer cette vérification plus d'une fois sur une donnée GeoJSON.

1
simonepri