Vairāk

Aprēķināt gultni no viena MapPoint uz citu MapPoint

Aprēķināt gultni no viena MapPoint uz citu MapPoint


Es izmantoju Esri.ArcGISRuntime pakotni C # programmā, kuru mēs rakstām.

Man no atskaites punkta jāizveido konkrētas formas un jāprojicē tās dažādos virzienos. To ir viegli izveidot jaunu punktu 5000 m attālumā ar 45 grādu gultni. ti

var startPoint = new MapPoint (125.4, -33.2, SpatialReferences.Wgs84); var endPoint = GeometryEngine.GeodesicMove (startPoint, 5000, LinearUnits.Meters, 45);

Vēlāk, kad man būs nepieciešams pārveidot punktus, es varu viegli pārrēķināt attālumu starp šiem punktiem, izmantojot

var distance = GeometryEngine.GeodesicDistance (startPoint, endPoint, LinearUnits.Meters);

Tomēr es tomēr nevaru noteikt, kāds sākotnējais leņķis vai gultnis bija starp šiem 2 punktiem.

Esmu mēģinājis izmantot Arctan2, bet MapPoint koordinātas ir izkropļotas ar zemes izliekumu (manuprāt), un tāpēc tiešais aprēķins ir nepareizs.

mainīgie grādi = Math.Atan2 (endPoint.Y - startPoint.Y, endPoint.X - startPoint.X) / Math.Pi * 180;

Iepriekš minētais atgriež aptuveni 39 grādu skaitli (PS es arī mēģināju mainīt X & Y, ne labāk).


Kā pirmo novērtējumu ņem 39, zemu - 29, augsto - 49. Mēģiniet samazināt attālumu starp zināmo beigu punktu un jauno galapunktu dotajā gultnē, izmantojot 1. vienādojumu. Skatiet, kā darbojas zelta griezums

Atjauniniet sākotnējo atbildi Man nav C # utt., Tāpēc tas ir risinājums, izmantojot arcpy

importēt arcpy, traceback, os, sys, math no arcpy importēt env env.overwriteOutput = True tbl = r "d: /scratch/excel.dbf" line = r "D: /Scratch/theLine.shp" g = arcpy.Geometry () gr = (math.sqrt (5) -1) / 2 def gss (a, b, tol): c = b-gr * (ba) d = a + gr * (ba), kamēr abs (cd)> tol: fc = f (c); fd = f (d) ja fc

Rezultāts:


Izmantojiet .NET saskarni GeographicLib. To var izsaukt no C #, un metode Geodesic :: Inverse ļauj aprēķināt attālumu un gultni, ņemot vērā divus punktus.


Pārsteidzoši, ka vienam no citiem puišiem uzņēmumā tas pats bija vajadzīgs pilnīgi citā projektā javascript.

Viņa atbilde ir izmantot Vinčentija apgriezto metodi. Apkārt ir dažas ieviešanas iespējas:

javascript - http://www.movable-type.co.uk/scripts/latlong-vincenty.html ritiniet pa labi līdz apakšai.

C # - http://www.codeproject.com/Articles/19939/GPS-Receivers-Geodesy-and-Geocaching-Vincenty-s-Fo

Lai pārbaudītu rezultātus, ir arī Austrālijas valdības apstiprināšanas vietne: http://www.ga.gov.au/geodesy/datums/vincenty_inverse.jsp


Skatīties video: How to import accounts in excel to mappoint