Vairāk

Kompensē lat / long nobīdes pēc reklāmguvumiem


Savā lietojumprogrammā es veicu reklāmguvumus starp diviem dažādiem datu formātiem. Pirmais formāts ir vienkāršs formāts, kas satur NE un DR koordinātas konkrētam taisnstūra laukumam:

area = {"sw": {"lat": -1234.5678, "lng": -8765.4321}, "ne": {"lat": 1234.5678, "lng": 8765.4321}}

Otrajam formātam jābūt saderīgam ar ETSI EN 302 931 V1.1.1, kuram SW / NE pāru vietā ir centra koordinātu pāris un attālumi līdz taisnstūra garajām un īsajām malām. Lai pārveidotu, es izmēru attālumus līdz garajām / īsajām pusēm, izmantojot haversine formulu

var R = 6371; // km var φ1 = lat1.toRadians (); var φ2 = lat2.toRadians (); var Δφ = (lat2-lat1) .toRadians (); var Δλ = (lon2-lon1). uz Radians (); var a = Math.sin (Δφ / 2) * Math.sin (Δφ / 2) + Math.cos (φ1) * Math.cos (φ2) * Math.sin (Δλ / 2) * Math.sin (Δλ / 2); var c = 2 * Math.atan2 (Math.sqrt (a), Math.sqrt (1-a)); var d = R * c;

un atrodiet centru, izmantojot vienkāršus viduspunkta aprēķinus:

var centrsLat = (this.ne.lat + this.sw.lat) / 2; var centrsLng = (this.ne.lng + this.sw.lng) / 2;

Pārveidojot ETSI atbilstošo objektu atpakaļ vienkāršā formātā, es izmantoju šo formulu, lai aprēķinātu koordinātas pēc attāluma (līdz garam / īsam) pārvietošanas noteiktā virzienā, lai atjaunotu DR / ZA pārus. Problēma ir tā, ka iegūtie koordinātu pāri ir nedaudz atdalīti no sākotnējiem, ar nobīdi līdz 1000 sekundēm (piemēram, 0,00667).

Mans jautājums ir, vai ir kāds veids, kā kompensēt vai novērst kļūdas. Arī jebkura metodika vai formulas ieteikumi ir apsveicami.


Vincenty formula (balstīta uz elipsoīdu) ir precīzāka nekā haversine (balstīta uz sfēru).

Arī lat un long parasti tiek izteikti grādos, bet jūsu koordinātas nav 0-180, tāpēc jūs varētu būt citā sistēmā, nekā paredzēts.


Centra atrašana nav tik vienkārša, kā jūs domājat. ņemiet kvadrāta piemēru EPSG: 4326:

Pārveidojiet to par pasaules Mercator, un centrs atrodas kaut kur citur:

Lamberta konformā koniskā formā tas vēl nav taisnstūris:

Tas pats attiecībā uz azimutālajiem vienādiem attālumiem:

Tāpēc esiet piesardzīgs, ja domājat par "vienkāršu" taisnstūri un tā centrālo punktu. Pasaule nav lidmašīna! Mani piemēri ir pārspīlēti, taču katrā projektētajā DRS atradīsit nobīdi, ja par centrālo punktu ņem tikai vidējo neprojektēto latlona vērtību.