2014-07-17 2 views
2

Dans geotools, vous pouvez trouver la distance entre deux géométries à l'aide de la fonction de distance dans la classe Géométrie. Il existe une sous-classe Point de Geometry mais aucune sous-classe de segment de ligne de Geometry. Il existe cependant une classe LineSegment dérivée de LineString qui n'est pas une sous-classe de la classe Geometry. J'ai essayé d'utiliser JTS mais il apparaît comme JTS est seulement pour le système de coordonnées cartésien. Question: Comment trouver la distance la plus courte (en mètres) entre un segment de ligne et un point dans un crs WGS84.Distance la plus courte entre un segment de ligne et un point dans WGS84 crs utilisant des géotools api

Veuillez noter: Je sais qu'il y a des réponses disponibles sur SO pour ce faire sans utiliser geotools. Puisque nous utilisons des géotools dans notre projet et que la maintenabilité du code est très importante, je veux le faire dans geotools.

+0

À mon avis, vous devez convertir vos coordonnées WGS84 à TM – tommybee

Répondre

0

La solution facile (en supposant que votre point est près à la ligne est d'utiliser JTS pour trouver le point le plus proche (ignorer la courbure de la terre pour l'instant), puis utiliser GeodeticCalculator pour trouver la distance entre les deux points. pour les courtes distances cela devrait être bien.

Si vous avez besoin plus de précision dont vous avez besoin pour vous reprojeter ligne (s) et le point à une projection plane et faire tous les calculs dans cette projection en utilisant directement JTS.

PS LineString étend Geometry (vérifiez le type de géométrie que vous avez)

0

À mon avis, vous devez convertir WGS84 coords à TM coords en utilisant GeoTools ponctuelles et linestring..Here est un code d'exemple de mon blog sur la classe CRS de GeoTools

http://blog.naver.com/tommybee/50154157186

. .. puis calculer la distance entre le point et le point sur linestring. vous pouvez enfin obtenir le résultat en convertissant le système de référence de la coordination d'origine comme WGS84 de TM (Transverse Meractor)

https://github.com/geotools/geotools/blob/master/docs/src/main/java/org/geotools/jts/SnapToLine.java

Et une discussion plus approfondie sur la distance, vous pouvez consulter le site de l'utilisateur GeoTools ci-dessous. .it est l'un d'entre eux

http://osgeo-org.1560.x6.nabble.com/position-on-LineString-that-is-closest-to-Point-td4322083.html

Questions connexes