Daha çox

Bir MapPoint-dən başqa bir MapPoint-ə hesablamağı hesablayın


Yazdığımız C # proqramının içərisində Esri.ArcGISRuntime paketini istifadə edirəm.

Bir istinad nöqtəsindən xüsusi formalar yaratmalı və müxtəlif istiqamətlərdə proyeksiyalaşdırmalıyam. 45 dərəcə rulmanla 5000m məsafədə yeni bir nöqtə yaratmaq asandır. yəni

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

Daha sonra nöqtələri tərtib etmək lazım olduqda, bu nöqtələr arasındakı məsafəni asanlıqla yenidən hesablaya bilərəm

var məsafəsi = GeometryEngine.GeodesicDistance (startPoint, endPoint, LinearUnits.Meters);

Ancaq bu 2 nöqtə arasında orijinal bucağın və ya rulmanın nə olduğunu müəyyənləşdirmək üçün hər halda tapa bilmirəm.

Arctan2-dən istifadə etməyi sınadım, ancaq MapPoint koordinatları yerin əyriliyi ilə əyilir (düşünürəm) və bu səbəbdən düz irəli hesablama səhvdir.

var derece = Math.Atan2 (endPoint.Y - startPoint.Y, endPoint.X - startPoint.X) / Math.Pi * 180;

Yuxarıda göstərilənlər təqribən 39 dərəcə bir rəqəm qaytarır (PS X və Y-ni də dəyişdirməyə çalışdım, daha yaxşı deyil).


İlk qiymətləndirmə olaraq 39, aşağı sərhəd kimi 29, yüksək sərhəd kimi 49 alın. 1-ci tənlikdən istifadə edərək verilmiş rulmandakı yeni son nöqtə ilə yeni son nöqtə arasındakı məsafəni minimuma endirməyə çalışın, qızıl hissənin necə işlədiyini görün https://en.wikipedia.org/wiki/Golden_section_search

Orijinal cavabda yeniləyin Məndə C # və s yoxdur, buna görə arcpy istifadə edərək həll edir

arcpy, traceback, os, sys, arcpy-dən math import 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) while abs (cd)>) tol: fc = f (c); fd = f (d) əgər fc

Nəticə:


GeographicLib üçün .NET interfeysindən istifadə edin. Bu C # -dən zəng edilə bilər və Geodeziya :: Tərs metod iki nöqtə verilmiş məsafəni və rulmanı hesablamağa imkan verir.


Şaşırtıcı bir şəkildə şirkətdəki digər oğlanlardan birinin javascriptdəki tamamilə fərqli bir layihədə eyni şeyə ehtiyacı var.

Cavabı Vincentinin tərs metodundan istifadə etməkdir. Ətrafında bir neçə tətbiq var:

javascript - http://www.movable-type.co.uk/scripts/latlong-vincenty.html sağdan aşağıya doğru sürüşdürün.

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

Nəticələrinizi yoxlamaq üçün bir Avstraliya Hökümətinin təsdiqləmə saytı da var http://www.ga.gov.au/geodesy/datums/vincenty_inverse.jsp


Videoya baxın: How to import accounts in excel to mappoint (Oktyabr 2021).