คำถามติดแท็ก postgresql

PostgreSQL เป็นระบบฐานข้อมูลเชิงสัมพันธ์เชิงวัตถุแบบโอเพ่นซอร์ส

2
ความคล้ายคลึงกันระหว่างสองวิถีขึ้นไป
ฉันมีข้อมูลรถบรรทุก ( http://www.chorochronos.org/ ) ข้อมูลนี้เป็นพิกัดจีพีเอสของหลายเส้นทางการเคลื่อนที่ของรถบรรทุกในเอเธนส์ ฉันต้องคำนวณความคล้ายคลึงกันระหว่าง trajetories เพื่อที่จะลบสิ่งที่คล้ายกันมาก! สีแดงและสีเขียวมีลักษณะคล้ายกัน แต่สีน้ำเงินสีดำและ (สีแดงหรือสีเขียว) เป็นวิถีที่แตกต่างกัน ฉันต้องการลบหนึ่งใน similares, สีแดงหรือสีเขียว ข้อมูลอยู่ในจุด (เรขาคณิต, lat และ long, x และ y) (พิกัด gps), ภาพเป็นตัวอย่างของวิถี

1
คำนวณเส้นขนานตามแนวเส้นกึ่งกลางใน PostGIS
ฉันมีถนน (เส้นกลางถนน) และสร้างตารางหลายเหลี่ยมในฐานข้อมูล PostgreSQL ของฉัน สถานการณ์ตัวอย่างเป็นดังนี้: ปัญหา: ฉันต้องคำนวณเส้นขนานตามถนนที่จุดตัดของบัฟเฟอร์ 50 เมตรรอบถนนและรูปหลายเหลี่ยมอาคารที่ใกล้ที่สุดทั้งสองด้าน สถานการณ์เอาท์พุทที่ต้องการคือ: สิ่งที่ฉันได้ลอง: แนวทางของฉันคือ: 1) Generate 50m buffer around street layer 2) get the intersection of buffer and polygons 3) Compute the distance 4) Draw offset curves (parallel lines) at both sides of street layer 5) Merge both curves to get …

2
กำลังค้นหาตาราง PostGIS ที่ไม่มีดัชนีหรือไม่
เมื่อเร็ว ๆ นี้ฉันได้มองไปรอบ ๆpg_stat_user_tablesและรู้สึกประหลาดใจที่ได้เห็นการสแกนตามลำดับจำนวนมากในตารางอวกาศของฉัน แน่นอนตารางเหล่านี้ขาดดัชนีเชิงพื้นที่ ฉันจะค้นหาตารางทั้งหมดที่มีคอลัมน์รูปทรงเรขาคณิตที่ไม่ได้จัดทำดัชนีได้อย่างไร

2
กำลังตัดจุดเชื่อมต่อด้วยคะแนนหรือไม่
ฉันกำลังตรวจสอบวิธีที่ดีที่สุดในการตัดการเชื่อมต่อตามจุด สถานการณ์คือ: ถนนจำนวนมากต้องแบ่งส่วนตามจุดตัดกันแบบนี้: ฉันได้ ตารางการเคลื่อนไหว (เต็มจุดโดยไม่ได้คะแนน) ตารางคะแนน st_intersection ฉันต้องได้รับการตัดส่วนที่เป็นอิสระโดยตารางจุดตัด ฉันใช้ฟังก์ชั่น PostGIS และพบวิธีการต่าง ๆ แต่ทุกคนมีปัญหาบางอย่างให้ฉัน นี่คือสิ่งที่ฉันทดสอบแล้ว: 1 ตารางเส้น: 1 แถว, st_memunion ของ 1200 บรรทัดตารางจุด: 1,700 แถว (คะแนน) มีอะไรที่ไม่ดี: ใช้เวลาและหน่วยความจำอย่างมาก ไม่สามารถสร้างหลายตารางพร้อมกันทำให้หน่วยความจำไม่สามารถจัดการได้ และผลลัพธ์ก็สกปรกและยุ่งเหยิง แทนที่จะให้หมายเลขแถวที่ถูกต้องกับฉันและฉันจำเป็นต้องทำความสะอาดในภายหลัง (อธิบายอย่างดีที่นี่แยกบรรทัดที่จุดตัดกัน ) CREATE TABLE lines_with_messy_result AS ( SELECT ((ST_DUMP(ST_SPLIT(a.geom,b.ix))).geom) as geom FROM st_union_lines a INNER JOIN lots_of_points b ON …

2
ST_ ระยะทางไม่ได้ใช้ดัชนีสำหรับการสืบค้นเชิงพื้นที่
ฉันไม่สามารถให้ PostGIS 2.1 ทำงานบน PostgreSQL 9.3.5 เพื่อใช้ดัชนีเชิงพื้นที่ได้แม้จะเป็นการสืบค้นที่ง่ายที่สุด ชุดข้อมูลทั้งหมดเป็น 8 ล้านคะแนน (จำนวนประชากรตารางจากที่นี่) ตารางถูกสร้างขึ้นเป็น CREATE TABLE points ( population DOUBLE PRECISION NOT NULL, location GEOGRAPHY(4326, POINT) NOT NULL ) CREATE INDEX points_gix ON points USING GIST(location); การสืบค้นนั้นง่ายมากตามที่ได้รับ SELECT SUM(population) FROM points WHERE ST_Distance( location, ST_GeographyFromText('SRID=4326; POINT(0 0)') ) < 1000 PostgreSQL ใช้การสแกน …

5
แบ่งบรรทัดออกเป็นชุดย่อยที่ไม่ทับซ้อนกันตามคะแนน
กำหนดตารางที่มีเรขาคณิตเส้นและหนึ่งจุดขึ้นไปที่จัดชิดกับบรรทัดนี้ในตารางแยกกันฉันต้องการแยกแต่ละบรรทัดด้วยจุดตัดกันอย่างน้อยหนึ่งจุดในแต่ละตำแหน่งที่เส้นตัดกับจุด ตัวอย่างเช่นมีเส้น L ซึ่งมีจุดตัดกันสามจุดคือ A, B และ C ตามลำดับตามเรขาคณิตของเส้น ฉันต้องการคืน L เป็นรูปทรงที่แตกต่างกันสี่แบบ: จากจุดเริ่มต้นของ L ถึง A, จาก A ถึง B ตาม L, จาก B ถึง C ตาม L และจาก C ถึงจุดสิ้นสุดของ L ในอดีตฉันเคยใช้หุ่นดีสำหรับงานนี้ซึ่งเป็นปัญหาการอ้างอิงเชิงเส้น ( http://sgillies.net/blog/1040/shapely-recipes/ ) อย่างไรก็ตามการทำเช่นนี้จะไม่สามารถทำได้ในกรณีนี้ซึ่งมีหลายล้านบรรทัดและคะแนน ฉันกำลังมองหาวิธีแก้ปัญหาด้วยการใช้ PostgreSQL / PostGIS แทน โปรดทราบว่าคะแนนจะถูก จำกัด ให้อยู่ในบรรทัด นอกจากนี้จุดที่ถูกต้องสามารถอยู่ในจุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดซึ่งในกรณีที่ไม่จำเป็นต้องแยกบรรทัด (เว้นแต่มีจุดอื่น ๆ ที่ไม่สอดคล้องกับจุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดเดียวกัน) บรรทัดย่อยต้องรักษาทิศทางและคุณลักษณะของตนเองไว้ …

4
กลุ่มตามช่วงเวลาประทับ 10 นาที PostgreSQL [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับระบบแลกเปลี่ยนข้อมูลทางภูมิศาสตร์ของกองซ้อน ปิดให้บริการใน2 ปีที่ผ่านมา ฉันต้องจัดกลุ่มตามช่วงเวลาที่แยก 10 นาที ฉันมีแบบสอบถามนี้ด้านล่างที่ส่งคืนชุดผลลัพธ์ให้ฉัน: SELECT timestamp FROM table_1, table_2_shape_polygon WHERE ST_Within(earthnetworks_geometry_raios, poligono_geometry) AND timestamp BETWEEN '2013-04-07 15:30:00' AND '2013-04-07 16:50:00' AND type = 0 AND id_polygon = 2 ชุดผลลัพธ์ของฉันเป็นดังนี้: "2013-04-07 15:30:55" "2013-04-07 15:32:52" "2013-04-07 15:32:52" "2013-04-07 15:34:21" "2013-04-07 15:39:09" "2013-04-07 16:24:25" "2013-04-07 16:29:58" …

2
อัปเดตแถวฐานข้อมูลด้วยคะแนนที่อยู่ในรูปหลายเหลี่ยม
ฉันมี PostGIS / Postgresql DB ที่มีสองตารางอยู่ในนั้น หนึ่งที่มีรูปทรงเรขาคณิตจุดและอื่น ๆ ที่แสดงถึงขอบเขตของประเทศเป็นรูปหลายเหลี่ยม ฉันต้องการเพิ่มชื่อประเทศที่แต่ละจุดตัดกับแต่ละแถวในตารางพอยต์ของฉัน อาจเป็นแบบสอบถามแบบใช้ปรับปรุงที่มีขนาดใหญ่ ฉันคิดว่านี่เป็นไปได้ที่จะใช้ SQL แบบตรง แต่ไม่รู้ว่าจะเริ่มต้นตรงไหน คำแนะนำใด ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชมอย่างมาก ...

1
Postgis 2.0 - มุมมอง public.geometry_columns ไม่มีข้อมูลที่ถูกต้องสำหรับมุมมอง
เราเพิ่งปรับปรุงฐานข้อมูลของเราเป็น Postgis 2.0 ในระบบของเราเราใช้ในการสร้างมุมมองสำหรับตารางที่มีคอลัมน์รูปทรงเรขาคณิต หลังจากสร้างมุมมองเรายังปรับปรุงตาราง geometry_columns ด้วยตนเองด้วยข้อมูลที่จำเป็น มุมมองใช้เพื่อสร้างเลเยอร์ Geoserver และฟีดข้อมูลสำหรับ ogr2ogr ปัญหาใน Postgis 2.0 คือตาราง geometry_columns ถูกแทนที่ด้วยมุมมองที่ดึงข้อมูลจากแคตตาล็อกระบบ ในกรณีของเราสำหรับมุมมองที่สร้างขึ้นเราจะไม่ดึงข้อมูลที่ถูกต้องในคอลัมน์ 'coord_dimension', 'srid' และ 'type' ข้อมูล : หลังจากการวิจัยบางอย่างฉันพบว่ามุมมอง geometry_columns กำลังใช้ตาราง pg_constraint เพื่อเติมคอลัมน์เหล่านั้น แต่สำหรับมุมมองนั้นไม่มีข้อ จำกัด ที่กำหนดไว้ ไม่มีใครมีความคิดใด ๆ ว่าเราจะแก้ไขปัญหานี้ได้อย่างไร? เราจะบังคับให้มุมมอง gemetry_columns ดึงข้อมูลที่จำเป็นได้อย่างไร มีวิธีแก้ปัญหาหรือวิธีอื่นในการทำเช่นนี้?

5
จะแบ่งถนน OSM ออกเป็นส่วน ๆ ได้ที่ทางแยกได้อย่างไร
ฉันต้องการสร้างเครือข่ายถนนสำหรับใช้กับ pgRouting โดยใช้ข้อมูล OpenStreetMap ฉันโหลด shapefile จาก GeoFabrik ลงในตาราง Postgres (โดยเปิดใช้งาน PostGIS) อย่างไรก็ตามปัญหาหนึ่งที่ฉันมีคือถนนมักจะไม่จบที่สี่แยกดังนั้นฉันจึงตัดสินใจแยกพวกเขาทุกครั้งที่สี่แยกหรือข้าม ในการระบุการแยกทั้งหมดที่ข้ามถนนหรือทางแยกฉันใช้สิ่งต่อไปนี้SQL(คล้ายกับคำถามก่อนหน้า ): CREATE TABLE split_points as SELECT DISTINCT ST_GeometryN(ST_Intersection(a.geom, b.geom),1) as geom FROM roads as a, roads as b WHERE ST_Touches(a.geom, b.geom) OR ST_Crosses(a.geom, b.geom) AND a.gid != b.gid GROUP BY ST_Intersection(a.geom, b.geom); ตอนนี้ฉันต้องการแยกถนนโดยใช้จุดเหล่านี้ ฉันใช้วิธีการต่อไปนี้: CREATE TABLE …

3
เลือกเฉพาะ Spatial tables จากฐานข้อมูล PostgreSQL หรือไม่
ฐานข้อมูลของฉันมีทั้งตาราง Spatial และ Non-Spatial แต่ฉันต้องการดึงเฉพาะ Spatial table จากแบบสอบถาม ข้อเสนอแนะใด ๆ เพื่อเลือกตารางเชิงพื้นที่เท่านั้น 'the_geom' คือคอลัมน์รูปทรงเรขาคณิตในตารางอวกาศ มิฉะนั้นเป็นไปได้หรือไม่ที่จะเลือกตารางจากชื่อคอลัมน์ ฉันพยายามที่มีรหัสนี้select relname from pg_stat_user_tables WHERE schemaname='public'; แต่จากนี้เราจะได้รับชื่อตารางทั้งหมด

2
วิธีการจับข้อผิดพลาด PostgreSQL / PostGIS ในการผูก GDAL / OGR Python?
เป็นไปได้หรือไม่ที่จะจับข้อความแสดงข้อผิดพลาดเอาต์พุต PostgreSQL ใน OGR หลังจากแบบสอบถามล้มเหลว ตัวอย่างเช่น conn.ExecuteSQL('SELECT * FROM non_existing_table;') ใน Postgres สิ่งนี้จะส่งคืนข้อความแสดงข้อผิดพลาด: "Error: relation 'non_existing_table' does not exist." ใน ogr เราได้มาตรฐาน: "Error: current transaction is aborted, commands ignored until end of transaction block" มันจะเป็นโบนัสถ้าเราสามารถจับ / แยกวิเคราะห์ข้อความแสดงข้อผิดพลาดของ Postgres ได้ ฉันสงสัยว่านี่เป็นช็อตเล็กน้อยที่ได้รับจากสิ่งที่ฉันได้อ่านเกี่ยวกับ SWIG / CPL แต่ก็คุ้มค่าที่จะถามว่าใครมีไอเดียไหม เป็นการดีที่จะเป็น Python แต่ฉันจะแสดงความคิดเห็น C / C …

4
กล่อง“ บริการ” ในกล่องโต้ตอบการเชื่อมต่อ PostGIS มีไว้เพื่ออะไร
บางคนสามารถอธิบายสิ่งที่ฉันต้องเขียนในกล่อง "บริการ" เมื่อเชื่อมต่อกับฐานข้อมูลท้องถิ่น ติดตั้ง QGIS Lisboa และ Postgres

2
ใช้ postgis เพื่อสร้างเฉดสีอาคาร
ฉันกำลังทำงานกับเครื่องมือประเมินศักยภาพพลังงานแสงอาทิตย์สำหรับอาคารที่มีอยู่ แนวคิดคือใช้รูปร่างของอาคาร (= รูปหลายเหลี่ยม) ความสูงและสร้างเฉดสีที่ได้ในเวลาที่กำหนด ฉันแค่ไปทำการทดสอบเพื่อดูดวงอาทิตย์ ฉันรู้เกี่ยวกับฟังก์ชันหญ้า r.sun.mask แต่มันสู้เพื่อสิ่งที่ฉันพยายามจะทำ สำหรับตอนนี้ฉันแค่อยากได้ร่มเงาเมื่อดวงอาทิตย์อยู่ทางใต้ที่อุณหภูมิ 18 °ในท้องฟ้า อาคารจึงควรมีเงาสูงประมาณสามเท่า สิ่งที่ฉันพยายามจะได้รับ: ฉันค้นหามาระยะหนึ่งแล้ว แต่ไม่พบเครื่องมือใด ๆ ใน Postgis ที่จะทำเช่นนี้ ฉันกำลังคิดเกี่ยวกับการบัฟเฟอร์แล้วตัดรูปหลายเหลี่ยม แต่ไม่สามารถทำงานได้ คุณรู้เครื่องมือใด ๆ หรือมีความคิดวิธีการทำอย่างไร

4
จำกัด แถวด้วยฟังก์ชั่น Spatial
ฉันพยายามปรับปรุงประสิทธิภาพสำหรับข้อความค้นหาด้านล่าง ไม่ว่าฉันจะเขียนแบบสอบถามอย่างไร (แบบสอบถามย่อยในส่วนคำสั่งย่อย, แบบสอบถามย่อยในส่วนคำสั่ง WHERE) จะยืนยันว่าจะเรียกใช้แถว ~ 570K ทั้งหมดผ่านฟังก์ชัน ST_DWITHIN ที่มีราคาแพงแม้ว่าจะมีเพียง 60 แถวที่เขต = 24 ฉันจะได้รับ postgres เพื่อกรองในเขต = 24 ก่อนที่จะวิ่งผ่าน fung postgis ซึ่งดูเหมือนว่าฉันจะเร็วขึ้นและมีประสิทธิภาพมากขึ้น? 700ms ไม่ได้ทำให้เกิดความกังวลมากเกินไป แต่เนื่องจากตารางนี้เพิ่มขึ้นเป็น 10M + ฉันกังวลเกี่ยวกับประสิทธิภาพ นอกจากนี้เพื่อทราบว่า p.id เป็นคีย์หลัก p.zipcode เป็นดัชนี fk, z.county เป็นดัชนี fk และ p.geom มีดัชนี GiST ค้นหา: EXPLAIN ANALYZE SELECT count(p.id) FROM point …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.