Suite

Calcul de la zone WGS84 (EPSG:4326) en C# ou SQLGeometry ?


Je ne suis normalement pas un développeur SIG, j'aide juste avec un bogue et je suis perplexe sur ce qui se passe ici, pourrais-je obtenir de l'aide s'il vous plaît.

J'ai deux calculs, un en 4326 (WGS84) et un en 3857 (Google Mercator). Les coordonnées ont été converties de 4326 -> 3857 et j'ai confirmé qu'elles sont correctes avec ArcGIS et divers outils de conversion de sites en ligne. Les résultats que j'ai sont…

-114.50,38.0=-12746081.696,4579425.813 -114.00,40.0=-12690421.950,4865942.280

Si je fais une estimation de la superficie de 3857 en calculant la différence entre les points x et y, puis en multipliant les différences et en divisant par 1 mil pour obtenir le km², j'obtiens le résultat juste en dessous de 16 000 km². Exécuter SqlGeometry.STArea sur une bbox polygonale en utilisant ces points, cela me donne un nombre similaire.

Si je convertis le lat long en UTM, je reçois les chiffres…

-114,50 38,0=719510,335753775,4208764,46330096 -114,00,40,0=243900,352021924,4432069,05663229 Calculs Excel Est Nord m² km 719 510,3358 4 208 764,4633 243,900,3520 4 432 069,0566 --------------------- ----------------------------------------------- 475 609,9837 223 304,5933 106 205 894 001,5610 106 205,8940

Sites utilisés pour convertir en UTM

http://www.latlong.net/lat-long-utm.html

http://www.rcn.montana.edu/Resources/Converter.aspx

http://www.earthpoint.us/Convert.aspx

Exécuter le même calcul de la différence et de la superficie me donne le résultat de 106 205 km².

Le code calcule actuellement le lat long en faisant ce qui suit sur un polygone de la bbox…

SqlGeography geog = SqlGeography.STGeomFromWKB(aoi.STAsBinary(), (int)aoi.STSrid); aire = (double)geog.STArea();

Cela me donne environ 9 600 km².

Ce que j'ai besoin de savoir…

J'essaie de savoir quel calcul est correct. Je penche pour que 3857 soit correct car les calculs me donnent approximativement les mêmes chiffres, peu importe comment je les fais. Comme je pense que 4326 est incorrect, j'aurais besoin d'un meilleur moyen de le calculer dans l'application actuelle (utilise C# et SQLGeometry). Si quelqu'un voit une erreur dans mes calculs, faites-le moi savoir et comment faire mieux si c'est le cas.


Hormis le fait que la projection EPSG:3857 ne préserve pas les zones, les unités de celle-ci ne sont pas de vrais mètres. Ce n'est qu'à l'équateur qu'ils correspondent à des mètres réels, tandis qu'ils s'étirent davantage vers les pôles.

L'UTM ne préserve pas non plus les zones, mais il minimise les erreurs de distance tant que vous êtes dans la même zone UTM (ce qui n'est pas le cas dans l'exemple). Il utilise donc de vrais mètres comme unités.

La seule façon correcte de calculer les aires est d'utiliser une projection à aire égale. Pour l'Amérique du Nord, vous pouvez essayer ESRI:102008

+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs

Utilisation de QGIS et de l'intégré$zonefonction du calculateur de champ, j'obtiens pour votre zone de 0,5x2,0 degrés :

EPSG : 2163 8105,49 km² (basé sur une sphère) EPSG : 3857 15947,43 km² (google mètres carrés) EPSG : 32107 9617,65 km² (NAD83 Nevada East) EPSG : 32611 9622,15 km² (WGS 84 / UTM zone 11N) ESRI:12008 9616,38 km² ( North_America_Albers_Equal_Area_Conic)

Comme vous le voyez, EPSG:3857 ne vaut rien. C'est juste une visualisation populaire, rien de plus.


Voir la vidéo: ESRI ArcGIS: Project MODIS - MOD10A2 Tile. Projection EPSG - WGS 84. UTM Zone 43N (Octobre 2021).