Viac

Ako rozdeliť epsg 4326 linestring na časti pozostávajúce z danej dĺžky v metroch v pythone?


Chcem poznať dĺžku linestrings (epsg: 4326) v metroch namiesto v stupňoch. Viem, že na to môžem použiť proj4.

Tu je môj kód, ak vás to zaujíma.

project = partial (pyproj.transform, pyproj.Proj (init = 'EPSG: 4326'), pyproj.Proj (init = 'EPSG: 3395')) project2 = partial (pyproj.transform, pyproj.Proj (init = 'EPSG :) vzdialenosť / vzdialenosť_v_metroch (linestring), zatiaľ čo current_ratio <1: point = linestring.interpolate (current_ratio, normalized = True) current_ratio += step points.append (point) return points distance_between_points = 249,67 total_distance_in_met = distance_between_points * 5 class TestInterpolate (TestCase): test_interpolate (self): with open ("linestring.json", 'r') as f: s = shape (json.load (f)) points = interpolate (10, s) l = LineString (points) self.assertEqual ( vzdialenosť_v_metroch (l), total_distance_in_metre)

A tu je linestring, ktorý používam na testy.

{"type": "LineString", "coordinates": [[37.6232398, 55.7615482], [37.6262633, 55.7606701], [37.6232398, 55.7615482], [37.6262633, 55.7606701], [37.6232398, 55.7615482], [37,6 }

Čo som urobil, je, že som vzal súradnice dvoch bodov z máp Google a zmeral som vzdialenosť medzi nimi aj v google mapách. Potom som to niekoľkokrát duplikoval a vytvoril som cestu, ktorá sa 5 -krát hojdá tam a späť.

A výsledok testu je

1864.394777794176 != 1248.35

Čo je dosť ďaleko od skutočnej vzdialenosti linestringu. Predpokladám, že dôvodom je - nepoužívam správne CRS na projekciu meračov.


Nie je to odpoveď na vašu otázku, ale referenčná metóda na porovnanie vašich výsledkov s:

  • Prečítajte si tento dokument PostGIS http://postgis.net/docs/ST_Length.html
  • Vezmite si príklad z geografie „Návratná dĺžka geografického riadku WGS 84“ a do dotazu vložte svoje linestring
VYBERTE ST_Dĺžku (the_geog) Ako length_spheroid, ST_Length (the_geog, false) As length_sphere FROM (SELECT ST_GeographyFromText ('SRID = 4326; LINESTRING (37.6232398 55,7615482, 376262602323606262601 372, 62660, 332, 626, 626, 332, 626, 626, 332, 62, 62, 62, 62, 62, 76, 76 ) Ako foo;

Skontrolujte výsledky:

length_spheroid 1067,52749423872 length_sphere 1064,36864138641

Údaje som tiež previedol na EPSG: 32637 pomocou OpenJUMP a zmeral som vzdialenosť: 1067.1980.

Záver: Vzdialenosť, ktorú ste namerali z máp Google, nie je dobrá referencia. Ste si istí, že ste túto vzdialenosť zmerali päťkrát, nie šesťkrát? Pri piatich časoch by to bolo 1040,291, čo je oveľa bližšie k výsledkom s EPSG: 32637 a s geografiou.


Pozri si video: QGIS: EPSG 4326 vs EPSG 3004 (Október 2021).