Question

Je suis en train de désosser une application de visualisation de transport. Je dois trouver la latitude pour l'origine de leur flux de données. Plus précisément ce que XY 0,0 est. Les seules formules que j'ai trouvées calculent la distance entre deux points ou l'emplacement d'un relèvement / d'une distance.

Ils utilisent le XY pour afficher une carte dans une application très ancienne. Le XY est en pieds.

J'ai ces coordonnées:

47.70446615506108, -122.34469839507263: x=1268314, y=260622
47.774182540800616,-122.3412994737105:  x=1269649, y=286031
47.60024792289405, -122.32767331735774: x=1271767, y=222532
47.57012494413499, -122.29129609983679: x=1280532, y=211374

Je dois savoir quelle est la latitude et la longitude de x = 0, y = 0 et quelle est la formule pour le découvrir.

Ils ont deux flux de données, l’un est plus courant que l’autre. Le flux contenant les données les plus récentes n'inclut PAS la latitude, la longitude, mais uniquement XY. J'essaie d'extrapoler en fonction de leur flux de données moins actuel, mais plus informatif (inclut lat, lon), ce qui correspond à 0,0 afin que je puisse simplement convertir les coordonnées XY de leur flux de données (plus actuel) en latitude et en longitude.

Était-ce utile?

La solution

Demandez-leur quel système de coordonnées ils utilisent! (ou si vous avez le jeu de données d'une base de données, regardez les métadonnées du jeu de données et il devrait vous l'indiquer. Sinon, je serais sceptique quant à sa valeur)

Il s'agit probablement de l'un des systèmes de coordonnées du plan d'état . Ils sont destinés à des régions de la Terre localisées (un peu comme UTM ) et sont fréquemment utilisés pour arpentage.

Vous pouvez utiliser CORPSCON (ou d'autres programmes SIG; ExpertGPS le fera si vous disposez du pack d'options SIG mais ce n'est pas gratuit. J'oublie si GPSBabel effectue la conversion) pour convertir entre lat / long et l'un des systèmes de coordonnées du plan d'état. Vous aurez également besoin de savoir à quelle datum sont les coordonnées. Les coordonnées WGS84 et NAD83 sont très proche mais le NAD27 est différent.

Autres conseils

Si vous regardez les 2 premières lignes de données et soustrayez la latitude

47.7044 - 47.7741 = -0.06972 degrees

Il y a 60 milles marins par degré de latitude et 6076 pieds par mille marin.

-.06972 * 60 * 6076 = 25,415 ft

Soustraction des deux valeurs 'Y':

260662 - 286031 = 25,409 ft

Cela semble donc prouver que les valeurs X et Y sont exprimées en pieds.

Si vous prenez l'une des valeurs Y et le reconvertissez en degrés, par exemple

260622 ft / ( 6076 ft/nm ) / ( 60 nm/degree ) = .71
286031 ft / 6076 / 60 = .78

Donc, soustraire ces valeurs aux latitudes de (47,70 et 47,77) vous donne très près d’exactement 47 degrés, ce qui devrait être votre y = 0 point.

Pour la longitude, un degré est égal à 60 milles marins à l'équateur et à 0 milles aux pôles. Donc, le nombre de miles par degré doit être multiplié par le cosinus de la latitude, donc environ cos (47 degrés), ou 0,68. Donc, au lieu de 6076 nm par degré, il est d'environ 4145 nm.

Donc pour les valeurs X,

1268314 ft / ( 4145 ft/nm ) / ( 60 nm/degree ) = 5.10 degrees
1269649 ft / 4145 / 60 = 5.10 degrees

Ces nombres X augmentent avec la latitude (moins négative), je pense donc que vous devriez ajouter 5,1 degrés, ce qui signifie que le point de base X est à peu près

-122.3 + 5.1 = 117.2 West longitude for your x=0 point.

C’est à peu près la position de Spokane WA.

Donc X étant donné = 1280532, Y = 211374

Lat = 47 + ( 211374 / 6096 / 60 ) = 47.58
Lon = -117.2 - ( 1280532 / ( 6096 * cos(47.58)) / 60 ) = -122.35

Ce qui est à peu près équivalent aux données données 47.57 et -122.29

La variance peut être due à différentes projections - le système X, Y peut être un système "aplati". projection par opposition à lat / long qui s’applique à une projection sphérique? Donc, pour être précis, vous aurez peut-être encore besoin de mathématiques plus avancées ou de cette bibliothèque open source:)

Cette question peut également être utile, elle contient un code pour calculer les grandes distances circulaires:

calculer la distance entre deux latitude points de longitude? (Formule Haversine)

Il existe de nombreux systèmes de coordonnées différents. Vous devez savoir quels sont les systèmes de coordonnées pour les lat / lons (par exemple, WGS84, etc.) et pour x / y en premier (par exemple, une sorte de système projeté probablement).

Une fois que vous avez cette information, vous pouvez utiliser plusieurs outils pour effectuer des conversions et des manipulations. proj4 est un exemple (d'une bibliothèque de codage open source gratuite).

Vous avez déjà de bons conseils sur les systèmes de coordonnées, je vais donc vous parler de la bibliothèque que j'ai utilisée avec grand succès dans le passé.

Geotrans est approuvé pour utilisation par le département américain de la Défense, vous pouvez donc être sûr qu'il est bien testé. Vous pouvez le récupérer à partir d'ici:

http://earth-info.nga.mil/GandG/geotrans/index.html

Ce n'est peut-être pas le bon lien car cette page parle de l'application, pas de la bibliothèque. Je pense que la bibliothèque est dans le package Developers. Les conditions de licence étaient très libérales de mémoire, mais assurez-vous de les lire avant de les utiliser commercialement.

Modifier:

Vous trouverez une discussion intéressante sur les licences Geotrans ici:

http://www.mail-archive.com/debian-legal@lists.debian.org/msg39263.html

J'ai dit ceci ici:

En Java, je voudrais utiliser le Convertisseur OpenMap d’une expression exprimée en UTM à une expression utilisant Latitude et Longitude (en supposant un ellipsoïde WGS-84 qui est le plus couramment utilisé dans le GPS).

OpenMap est open source et je posterais un lien vers leur page de téléchargement, mais ils ont un court script de licence. Donc, pour éviter d'être grossier, je ne ferai pas de lien profond. Allez plutôt sur leur page d'accueil et sur cliquez sur Téléchargements .

Cela devrait résoudre votre problème directement ou au moins vous diriger vers un algorithme utile.

J'ai utilisé la classe PHP gPoint de Brenor Brophey pour le faire sur quelques occasions. Résultats solides, code GPL et déploiement facile. Recommandé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top