Hast du die notwendigen Einträge für 900913 in spatial_ref_sys und ggf. der epsg-Datei von proj vorgenommen?
Gruß Uwe
Hallo
ich bin neu bei postgres und versuche grade einen constraint abfrage durch zu führen. ich verwende postgresql 8.3.7.1 und postgis 1.3.6.1. Ich möchte 2 datensätze mit punkten vergleichen. dabei habe ich zuerst die daten von epsg:4326 in epsg:900913 transformiert um eine buferung in metern durch führen zu können. danach habe ich die relevanten punkte in views gepackt und einen der datensätze in einem view mit dem buffer versehen.
als letzten schritt wollte ich nun sehen wieviele punkte von dem einen datensatz in den buffern vom anderen datensazu liegen mit dem sql
SELECT gr.feattyp, b.id
FROM buffer_20 AS gr, poiingermany AS b
WHERE Contains ( gr.setsrid, b.geom_900913 ) = TRUE;
leider bekomme ich dabei die fehlermeldung: St9bad_alloc GEOS buffer() threw an error!
Damit bin ich dann mit meinem latein am ende.
PS: ich habe die Postgres config Dateieingestellt auf
§ shared_buffers = 512 mb
§ work_mem = 16MB
§ maintenance_work_mem = 256MB
§ effective_cache_size = 1280MB
im vorraus vielen dank für hilfe...
Alex
Hast du die notwendigen Einträge für 900913 in spatial_ref_sys und ggf. der epsg-Datei von proj vorgenommen?
Gruß Uwe
Have a lot of fun!
Ja ich habe den epsg code in die spatial_ref_sys eingetragen.
Zusätzlich habe ich weitere Test durchgeführt. Habe fest gestellt, dass bei einem kleinen Datensatz alles funktioniert. Somit ist wohl die Größe des Datensatzes das Hauptproblem (258000 Polygone und 105000 Punkte). Ich gehe davon aus, dass es Probleme gibt mit dem Arbeitsspeicher. Deswegen habe ich versucht einen cursor einzubauen. Leider kenne ich mich damit nicht aus. Kann mir jemand dabei helfen? Mein bisheriges sql sieht so aus:
declare my_cursor cursor for select * from buffer_50;
FETCH FORWARD 1000 FROM my_cursor;
declare my_cursor2 cursor for select *from osm_poi;
FETCH FORWARD 1000 FROM my_cursor2;
create table osm_in_50 as SELECT gr.gid, gr.name, gr.feattyp, b.id
FROM buffer_50 AS gr, osm_poi AS b
WHERE Contains ( gr.setsrid, b.geom_900913 ) = TRUE;
close my_cursor2;
close my_cursor;
Aber das scheint auch noch nicht richtig zu funktionieren bei dem Großen Datensatz...
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen