Vairāk

Kā aprēķināt vienības testa attālumu starp punktiem?

Kā aprēķināt vienības testa attālumu starp punktiem?


Es vēlos uzrakstīt vienības testu šim vaicājumam

izvēlieties a.id, b.id no kanāla a, kanālu b, kur ST_Distance_Spheroid (a.koordinātas, b.koordinātas, 'SPHEROID ["WGS 84", 6378137,298.257223563]') <= 1000,0 un a.id! = b. id

Šī vaicājuma mērķis ir atrast visus punktus, kas atrodas tuvu viens otram.

Es domāju šādi: izveidojiet trīs punktus ar zināmu attālumu viens no otra. Izpildiet vaicājumu un pēc tam pārbaudu, vai tiek atgriezti punkti, kas ir tuvāk, tad kāds slieksnis utt.

Problēma ir tā, ka es nezinu, kā iegūt zināmā attālumā esošus punktus.

Es esmu mēģinājis doties uz Google Maps, lai izvēlētos dažus punktus un izvilktu to koordinātas no URL (EPSG: 4326?) Formātā. Tad ar google maps mēra attālumu starp tām.

Esmu pievienojis šos punktus datu bāzei un aprēķinājis attālumu ar ST_Distance_Spheroid un man bija atšķirīgi rezultāti, nekā man saka Google Maps mērījumi (aptuveni 100 metru atšķirība).

Tāpēc es nezinu, kam uzticēties Google Maps vai Postgis.

Šeit ir mani testa dati no google maps geojson formātā.

[{"koordinātas": {"type": "Punkts", "koordinātas": [37.6154764, 55.7573887]}}, {"koordinātas": {"type": "Punkts", "koordinātas": [37.5790479, 55.8075773] }}, {"koordinātas": {"type": "Punkts", "koordinātas": [37.6176973, 55.7578234]}}]

Un Google kartes norāda, ka attālums starp pirmo un trešo ir aptuveni 250 metri ST_Distance_Spheroid dod apmēram 147 metrus, kas man ir būtiska atšķirība.


Tā kā jūsu koordinātas lon un lats ir līdzīgas, jūsu kļūda nav tik acīmredzama, taču esmu 100% pārliecināts, ka jūs piegādājat PostGIS vai Google koordinātas nepareizā secībā. PostGIS vēlas savas koordinātas garuma/platuma secībā. Google var vēlēties savas koordinātas citā secībā. Pārliecinieties, vai izmantojat pareizo.

Piemēram

izvēlieties st_distance ('POINT (37.6154764 55.7573887)' :: ģeogrāfija, 'POINT (37.6176973 55.7578234)' :: ģeogrāfija); st_distance -------------- 147.59498555 (1 rinda) izvēlieties st_distance ('PUNKTS (55.7573887 37.6154764)' :: ģeogrāfija, 'PUNKTS (55.7578234 37.6176973)' :: ģeogrāfija); st_distance -------------- 249.46582393 (1 rinda)

Skatīties video: Kā aprēķināt vienkāršas izmaksas ar Excel formulām?