Dlaczego osm2pgsql dzieli linię na kawałki?

Importuję sobie plik:

osm2pgsql --create --database osm_diff --prefix diff --cache 2000 /tmp/osm/poland-latest.osm.pbf_poly.pbf

WGS84:

osm_diff=# SELECT ST_Length(way) FROM diff_line WHERE osm_id='169022564';
     st_length     
-------------------
 0.999999999999999
 0.248564468122308
(2 rows)

Mercator:

osm_diff=# SELECT ST_Length(way) FROM diff_line WHERE osm_id='169022564';
    st_length     
------------------
 99999.9999999999
 48931.7186307075
(2 rows)

Przy imporcie za pomocą osmosis jest normalnie:

osm_diff=# SELECT ST_Length(linestring) FROM ways WHERE id='169022564';
    st_length    
-----------------
 1.2485644681223
(1 row)

osm2pgsql był projektowany pod kątem generowania wsadu do kafelków - o ile pamiętam dłuższe linie są specjalnie cięte żeby szybciej się renderowało. Jak widzisz pierwszy odcinek linii ma długość 1 stopnia, zapewne co tyle jest cięte.

Swoją drogą polecam imposm do importu danych - znacznie elastyczniejszy w konfiguracji i użyciu :).

https://github.com/openstreetmap/osm2pgsql/blob/ed86d635cb0e54252881c766ede90a532e63dca0/output-pgsql.cpp#L125-L130
Wydaje mi się, że jeśli to wywalisz i przekompilujesz, to będziesz miał problem z głowy.