[Talk-de] postgis osm2pgsql issue

Tobias tobias at antifuse.de
Mi Apr 6 18:41:52 UTC 2016


Hi,

ich habe jetzt die Datenbank gedropt und auch das postgis template neu
angelgt....

ich verwende
community/postgis 2.2.1-2
mit extra/postgresql 9.5.2-1
unter Arch Linux

zum Setup der DB bin ich wie folgt vorgegangen....
Postgis template erstellt...

createdb template_postgis -E UTF-8
createlang plpgsql template_postgis
	createlang: Sprache „plpgsql“ ist
	bereits in Datenbank „template_postgis“ installiert

psql -d template_postgis -f
/usr/share/postgresql/contrib/postgis-2.2/postgis.sql

psql -d template_postgis -f
/usr/share/postgresql/contrib/postgis-2.2/spatial_ref_sys.sql

psql
UPDATE pg_database SET datistemplate = TRUE WHERE datname =
'template_postgis';

createdb -T template_postgis osmToPostgres

Dann habe ich die Daten via
time osm2pgsql -x -U postgres -d osmToPostgres
/home/tobias/Downloads/osm/niederbayern-latest.osm.pbf -c --latlong
--number-processes=1 --style /home/tobias/OSM/default.style

importiert

Der Query:
SELECT DISTINCT area.osm_id, area.name, area.postal_code
FROM planet_osm_polygon AS area JOIN planet_osm_polygon AS element ON
ST_CONTAINS(area.way, element.way)
WHERE element.osm_id = '142034442' AND (area.postal_code is not null OR
area.boundary = 'administrative')

liefert allerdings immer noch das falsche ergebnis:
-190875;"Altdorf";""
-1113363;"";"84032"

Irgendwie habe ich den verdacht dass es ein problem mit den
Multirelationen gibt...
Alle oben aufgeführen schritte liefen ohne fehler meldund durch ...

Hat jemand eine Idee woher das falsche Verhalten kommt und wie ich es
abstellen kann?

Gruß und Dank Tobias



On 05.04.2016 21:13, Frederik Ramm wrote:
> Hi,
> 
> On 04/05/2016 08:22 PM, Tobias wrote:
>> für eine andere Bäckerei:
>> http://www.openstreetmap.org/way/369696958
>> welche Direkt in Landshut liegt bekomme ich mit dem Query:
>>
>> SELECT DISTINCT area.osm_id, area.name, area.postal_code
>> FROM planet_osm_polygon AS area JOIN planet_osm_polygon AS element ON
>> ST_CONTAINS(area.way, element.way)
>> WHERE element.osm_id = '369696958' AND (area.postal_code is not null OR
>> area.boundary = 'administrative')
>>
>> folgendes Ergebnis:
>> -62657;"Landkreis Landshut";""
>> -3149176;"";"84030"
>> -62484;"Landshut";""
>>
>> Die Relationen sollen imo ok sein.
> 
> Irgendwas ist da doch faul. Die Bäckerei 369696958 liegt in der
> kreisfreien Stadt Landshut. Der Landkreis Landshut sollte also *nicht*
> in dieser Liste oben stehen!
> 
> Die Bäckerei 142034442 aus Deiner anfänglichen Frage hingegen *liegt* im
> Landkreis Landshut; dort hätte das -62657 also auftauchen müssen.
> 
> Teste mal dies:
> 
> osm=# select st_contains(a.way,b.way)
> from planet_osm_polygon a, planet_osm_polygon b
> where a.osm_id=-62657
> and b.osm_id=369696958;
>  st_contains
> -------------
>  f
> (1 row)
> 
> osm=# select st_contains(a.way,b.way)
> from planet_osm_polygon a, planet_osm_polygon b
> where a.osm_id=-62657
> and b.osm_id=142034442;
>  st_contains
> -------------
>  t
> (1 row)
> 
> So wäre es richtig. Wenn ich auf meiner Datenbank Deine Abfrage für die
> 369696958 mache, erhalte ich
> 
>   osm_id  |     name     | ?column?
> ----------+--------------+----------
>    -62484 | Landshut     |
>  -2145268 | Bayern       |
>    -17593 | Niederbayern |
>  -3149176 |              | 84030
>    -51477 | Deutschland  |
> (5 rows)
> 
> und für die 142034442:
> 
>   osm_id  |        name        | ?column?
> ----------+--------------------+----------
>  -1113363 |                    | 84032
>   -190875 | Altdorf            |
>  -2145268 | Bayern             |
>    -62657 | Landkreis Landshut |
>    -17593 | Niederbayern       |
>    -51477 | Deutschland        |
> (6 rows)
> 
> Wenn das bei Dir anders ist, würde ich mir vllt. mal die Polygone mit
> QGis anschauen.
> 
> Bye
> Frederik
> 





Mehr Informationen über die Mailingliste Talk-de