คำถามติดแท็ก spatial-query

1
ความแตกต่างระหว่าง ST_D ภายในและ ST_ ระยะทางสำหรับการค้นหาใกล้เคียงใน PostGIS คืออะไร
ฉันมีบันทึกที่เก็บไว้ในตารางที่มีพิกัดละติจูด / ลองจิจูดเก็บไว้ในเขตเรขาคณิต ฉันต้องการค้นหาระเบียนทั้งหมดที่อยู่ใกล้กับจุดอ้างอิงที่ผู้ใช้ระบุ หมายเหตุ "ใกล้เคียง" อาจหมายถึงน้อยกว่า 100km (อาจเล็กกว่า) ST_DWithinตัวอย่างส่วนใหญ่ผมเห็นการใช้งาน มีเหตุผลที่คุณไม่สามารถใช้งานได้ST_Distanceหรือไม่? อะไรคือความแตกต่างระหว่างการใช้ST_DWithinและST_Distanceการทำสิ่งนี้? ตัวอย่างเช่น: SELECT name, ST_AsText(coords) FROM places WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1) VS SELECT name, ST_AsText(coords) FROM places WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1

2
ระบุจุดใน shapefile ที่ไม่มีจุดอื่นภายใน x km ด้วย QGIS
นี่อาจเป็นคำถามที่ไร้เดียงสา แต่ฉันดิ้นรนในฐานะผู้ใช้รายใหม่ของ QGIS ฉันมีไฟล์รูปร่างที่ใหญ่มาก (275,000 คะแนน แต่สามารถแบ่งออกเป็นย่อย ๆ ประมาณ 10 แห่งหากจำเป็นสำหรับการประมวลผลที่เร็วขึ้น) ฉันต้องการระบุจุดทั้งหมดที่ไม่มีจุดอื่นภายใน 200 เมตรจากนั้นให้เขียนรหัสแต่ละจุดด้วยค่า "ไม่ซ้ำกัน" ในฟิลด์ของไฟล์ สำหรับจุดอื่น ๆ ทั้งหมดที่เป็นส่วนหนึ่งของกลุ่มท้องถิ่นฉันต้องการรหัสเหล่านั้นเป็น "คลัสเตอร์" หลังจากประสบความสำเร็จแล้วฉันต้องการเลือกเพียงหนึ่งรายการสำหรับแต่ละคลัสเตอร์โดยการสุ่มเพื่อเก็บไว้ในชุดข้อมูลโดยละทิ้งกลุ่มอื่น ขณะนี้ฉันไม่สามารถบรรลุขั้นตอนที่ 1 ดังนั้นยินดีต้อนรับความช่วยเหลือใด ๆ

3
แบบสอบถามเชิงพื้นที่ใน QGIS3 อยู่ที่ไหน
ฉันเพิ่งติดตั้ง QGIS 3.0 EA ฉันสงสัยว่าคำค้นหาเชิงพื้นที่คืออะไร มี "จำนวนจุดเป็นรูปหลายเหลี่ยม" ในกล่องเครื่องมือ แต่ไม่สามารถนับจุดภายในรูปหลายเหลี่ยมได้

3
การทำ Spatial Query ในลูปใน PyQGIS
สิ่งที่ฉันพยายามทำ: วนลูปผ่านไฟล์รูปร่างจุดและเลือกแต่ละจุดที่อยู่ในรูปหลายเหลี่ยม โค้ดต่อไปนี้ได้รับแรงบันดาลใจจากตัวอย่างการสืบค้นเชิงพื้นที่ที่ฉันพบในหนังสือ: mitte_path = r"D:\PythonTesting\SelectByLocation\mitte.shp" punkte_path = r"D:\PythonTesting\SelectByLocation\punkte.shp" polygon = QgsVectorLayer(mitte_path, 'Mitte', 'ogr') points = QgsVectorLayer(punkte_path, 'Berlin Punkte', 'ogr') QgsMapLayerRegistry.instance().addMapLayer(polygon) QgsMapLayerRegistry.instance().addMapLayer(points) polyFeatures = polygon.getFeatures() pointsCount = 0 for poly_feat in polyFeatures: polyGeom = poly_feat.geometry() pointFeatures = points.getFeatures(QgsFeatureRequest().setFilterRect(polyGeom.boundingBox())) for point_feat in pointFeatures: points.select(point_feat.id()) pointsCount += 1 print 'Total:',pointsCount มันใช้งานได้และมันเลือกชุดข้อมูล แต่ปัญหาก็คือมันเลือกตามขอบกล่องดังนั้นจึงทำให้เห็นได้ชัดว่าฉันไม่สนใจจุดกลับมา: …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.