PostGIS'de nokta ve çokgen katmanlarının uzamsal birleşimi nasıl gerçekleştirilir?


13

Bir parsel katmanı (yani onun parcel_id atamak) ile ilişkilendirmek istediğiniz hane temsil eden bir nokta veri kümesi var. ArcMap ile, noktalara çokgenleri uzamsal olarak birleştirebilir ve birleştirmenin belirli bir arama yarıçapına sahip olduğunu ve en yakın çokgeni kullanabileceğini belirtebilirim.

Bunu postgres ile gerçekleştirmek istiyorum ve bunu yapmanın en ihtiyatlı yolunun ne olduğunu merak ediyordum. ST_contains kullanamıyorum çünkü noktalar gerçek parsellerde değil, sokaklarda düşüyor. ST_contains yerine yakınlık kontrollerine izin veren başka bir işlev var mı?

update households h set parcel_id = p.parcel_id 
from parcels p where ST_contains(p.the_geom, h.xy);

Yanıtlar:


8

Yapmak istediğiniz şey için bence ST_DWithin işe yarayacaktı. PostGIS sitesi belgelerinden:

ST_DWithin - Geometriler birbirinin belirtilen mesafesindeyse true değerini döndürür. Geometri birimleri uzamsal referansın içindedir ve Coğrafya birimleri için metre cinsindendir ve ölçüm varsayılan olarak use_spheroid = true (sferoid etrafındaki ölçü) olarak ayarlanmıştır, daha hızlı kontrol için use_spheroid = false küre boyunca ölçmek için.


Bu muhtemelen işe yarayabilir, ancak püf noktası uygun bir arama eşiği belirlemektir. Çok yüksek ayarladım ve birden fazla maç aldım, çok düşük ayarladım ve hiç almadım. Veya yüksek olarak ayarlayın ve ekstra eşleşme kayıtlarını atın.
ako
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.