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

PostGIS เป็นส่วนเสริมสำหรับฐานข้อมูลเชิงสัมพันธ์เชิงวัตถุของ PostgreSQL ที่เพิ่มการรองรับวัตถุทางภูมิศาสตร์

1
สร้างคะแนนตามระยะทางที่กำหนดจากกันและกันในเซลล์ของแหอวนแบบสุ่มในขณะที่อยู่บน linestrings
เรามีโปรโตคอลที่ดินที่เราได้รับแหอวนของเซลล์ 1x1 กม. เซลล์บางส่วนได้รับการสุ่มเลือก เราต้องใส่ 4 คะแนนในแต่ละเซลล์และคะแนนเหล่านี้จะต้องอยู่บนถนนด้วย ระยะห่างต่ำสุดระหว่างจุดต้องมี 500m สำหรับทุก ๆ จุดของทุกเซลล์หากเป็นไปได้หรือหากไม่ใช่เราต้องการระยะทางที่เป็นไปได้สูงสุด ในการทดลองครั้งแรกเราแบ่งทุกเซลล์ในสี่เซลล์ 500x500 m ด้วยST_CreateFishnetจากนั้นเราวางจุดที่ centroid ของเซลล์ย่อยแล้วบนถนนที่ใกล้ที่สุด (ST_ClosestPoint) เราได้รับผลลัพธ์ที่ดี แต่ในตัวอย่างด้านล่างคุณสามารถเห็นจุดที่ 5 อยู่ใกล้เกินไปจาก 6 และสามารถเคลื่อนย้ายบนถนนด้านซ้าย WITH r1 AS ( -- only sub-cells which intersects random cells SELECT id_maille, ROW_NUMBER() OVER() AS id_grille, fishnet_500.geomgrille FROM fishnet_500 JOIN t_mailles ON ST_Intersects(ST_Buffer(t_mailles.geom,-200), fishnet_500.geomgrille) …

2
เชื่อมต่อ QGIS กับฐานข้อมูล Remote PostgreSQL โดยใช้คีย์ SSH หรือไม่
ฉันได้สร้างชื่อผู้ใช้รหัสผ่าน & ssh พร้อมสิทธิ์รูทบนเซิร์ฟเวอร์ระยะไกล (Vagrant) และฉันพยายามเชื่อมต่อผ่านวิธีการปกติ แต่การตรวจสอบรหัสผ่านของฉันล้มเหลว ฉันสามารถ ssh เข้าสู่เซิร์ฟเวอร์ได้สำเร็จโดยใช้ข้อมูลรับรองเดียวกัน ฉันจะกำหนดค่า QGIS ให้เชื่อมต่อกับ PostgreSQL / PostGIS โดยใช้คีย์ ssh ได้อย่างไร

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และรู้สึกประหลาดใจที่ได้เห็นการสแกนตามลำดับจำนวนมากในตารางอวกาศของฉัน แน่นอนตารางเหล่านี้ขาดดัชนีเชิงพื้นที่ ฉันจะค้นหาตารางทั้งหมดที่มีคอลัมน์รูปทรงเรขาคณิตที่ไม่ได้จัดทำดัชนีได้อย่างไร

3
สร้างบัฟเฟอร์ที่ละลายจากหลายเรขาคณิต (รวมกันโดยแอตทริบิวต์ที่ใช้ร่วมกันและการแยกเชิงพื้นที่)
ฉันจะสร้างบัฟเฟอร์ที่ละลายจากคุณสมบัติอินพุตหลายจุด ในตัวอย่างด้านล่างตารางอินพุตมี 4 ฟีเจอร์ คุณลักษณะ#2ประกอบด้วยรูปทรงเรขาคณิตสองจุด หลังจากสร้างบัฟเฟอร์ฉันได้รับรูปเรขาคณิต 4 เหลี่ยม: มีวิธีการจัดกลุ่มผลลัพธ์หรือไม่ บัฟเฟอร์ของจุด#1และ#2ถูกยุบและควรเป็นคุณลักษณะหลายรูปหลายเหลี่ยม ( a) สิ่งที่ฉันทำไปแล้ว: -- collect all buffers to a single multi-polygon feature -- dissolve overlapping polygon geometries CREATE TABLE public.pg_multibuffer AS SELECT row_number() over() AS gid, sub_qry.* FROM (SELECT ST_Union(ST_Buffer(geom, 1000, 8))::geometry(MultiPolygon, /*SRID*/) AS geom FROM public.multipoints) AS sub_qry; แก้ไข: …

1
QGIS บันทึกข้อผิดพลาดของตาราง postgis: ไม่มีบัฟเฟอร์ผลลัพธ์
ฉันเป็นรูปหลายเหลี่ยมใน PostGIS และเมื่อฉันพยายามเพิ่มฟีเจอร์ S โดยใช้ QGIS จะได้รับข้อผิดพลาดเมื่อฉันบันทึกการแก้ไข นี่คือการแจ้งเตือนข้อผิดพลาด "ไม่มีบัฟเฟอร์ผลลัพธ์" ผมพบว่ากรณีที่คล้ายกันที่นี่: ข้อผิดพลาด PostGIS ขณะที่การเพิ่มคุณลักษณะ: บัฟเฟอร์ไม่มีผล แต่มันก็ไม่ได้ให้คำตอบเพื่อแก้ปัญหา ความคิดใด ๆ
10 qgis  postgis 

3
วิธีสร้างสคริปต์ประมวลผล QGIS ที่เพิ่มลำดับลงในคอลัมน์ตัวระบุที่ไม่ซ้ำกันใน PostGIS
ใครสามารถช่วยฉันสร้างสคริปต์ประมวลผล QGIS ที่เพิ่มลำดับลงในคอลัมน์ตัวระบุที่มีอยู่ (ประเภท: จำนวนเต็ม) ใน PostGIS ได้หรือไม่ นี้จะเป็นประโยชน์มากเช่นเป็นวิธีแก้ปัญหาสำหรับข้อผิดพลาด# 6798 น่าเสียดายที่ฉันไม่มีประสบการณ์ Python เลย CREATE SEQUENCE /*input_schema*/./*input_table*/_/*uic*/_seq OWNED BY /*input_schema*/./*input_table*/./*uic*/; SELECT SETVAL('/*input_schema*/./*input_table*/_/*uic*/_seq', (SELECT MAX(/*uic*/) FROM /*input_schema*/./*input_table*/)); ALTER TABLE /*input_schema*/./*input_table*/ ALTER COLUMN /*uic*/ SET DEFAULT nextval('/*input_schema*/./*input_table*/_/*uic*/_seq'::regclass);

2
PostGIS - รับจุดภายในเส้นหรือรูปหลายเหลี่ยม
ฉันต้องได้รับจุดศูนย์กลางของเส้นหรือรูปหลายเหลี่ยมเพื่อให้markerแอปของฉัน ดังนั้นเมื่อคุณคลิกที่เครื่องหมายเรขาคณิตจะปรากฏขึ้น (เส้นหรือรูปหลายเหลี่ยม) ฉันเคยST_Centroidทำให้มันใช้งานได้ ผลที่ได้คือสิ่งที่ฉันคาดไม่ถึงว่ามีรูปหลายเหลี่ยมหรือเส้นที่เซนทรอยด์อยู่นอกรูปเรขาคณิต สิ่งที่ฉันต้องการสำหรับเส้นเหล่านั้นหรือรูปหลายเหลี่ยมคือการได้รับ "จุดกึ่งกลางที่สุด" แต่ภายในเรขาคณิต ฉันจะทำสิ่งนี้ได้อย่างไร มีวิธีแก้ไขไหม?

3
กำลังเพิ่มคอลัมน์รูปทรงเรขาคณิตเพิ่มเติมใน PostGIS?
ผมนำเข้าหลายชุดข้อมูลภูมิศาสตร์เข้า PostGIS และพวกเขามีความแตกต่างกันSRIDของ (บางคนมีEPSG:3857บางEPSG:4326อย่างบางอย่างอื่น) ฉันต้องการสร้างเพิ่มเติมgeometry columnเช่น the_geom_mercatorด้วยSRID EPSG:3857และยังคงgeomคอลัมน์เดิมในสิ่งที่SRIDมันเข้ามา ฉันจะใช้ฟังก์ชัน PostGIS ได้อย่างไร

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 …

1
สร้างรูปหลายเหลี่ยมบนพื้นที่ที่เข้าถึงได้
ฉันกำลังทำงานในด้านของไอโซนีและอัลกอริธึมพื้นฐาน ตอนนี้สิ่งที่ทำให้เกิดปัญหาไม่ใช่การคำนวณถ้า isochrone ตัวเอง แต่การสร้างภาพของผลลัพธ์ ผลลัพธ์ของอัลกอริทึม isochrone ของฉันคือจุดและขอบ ในความเป็นจริงฉันมีวิธีแก้ปัญหาการทำงาน แต่สำหรับ 3873 edge และสำหรับ 1529 nodes สิ่งต่าง ๆ ดูเหมือนจะใช้ตลอดไป (ประมาณ 2.0 วินาทีบนแล็ปท็อป Lenovo T440 ของฉันซึ่งมี CPU Core i7 และ SSD ความเร็วสูง) แทนที่จะวินาทีฉันต้องการอะไรมากกว่าเช่น msec :-) บางทีใครบางคนสามารถช่วยฉันในการลดเวลาการคำนวณที่จำเป็นในการสร้างรูปหลายเหลี่ยมซึ่งมองเห็นพื้นที่ที่สามารถเข้าถึงได้ แต่รอ ... สิ่งแรกก่อน! นี่คือการมองเห็นของขอบที่ฉันเป็นผลการคำนวณของ isochrone ของฉัน: ขอบเหล่านี้จะถูกเก็บไว้ในตารางฐานข้อมูล PostGIS และเป็น linestrings ง่าย สิ่งที่ฉันต้องการแสดงต่อผู้ใช้มีลักษณะดังนี้: สังเกตบริเวณที่ไม่ได้เชื่อมต่อในทิศใต้และทิศตะวันออกของภาพ สิ่งเหล่านี้ควรวาดเป็นพื้นที่แยกต่างหาก (ดังนั้นจึงไม่อนุญาตการรวมที่นี่ :-)) …

2
วิธีสร้างบรรทัดผู้นำแบบไดนามิก
ฉันกำลังพยายามสร้างบรรทัดผู้นำแบบไดนามิกโดยใช้มุมมอง PostGIS เพิ่มเติมจากเครื่องมือ QGIS„ ย้ายป้ายกำกับ“ CREATE VIEW leader_line AS SELECT gid, ST_MakeLine(geom, ST_SetSRID(ST_MakePoint(xcord_label, ycord_label), SRID))::geometry(linestring, SRID) AS geom FROM point WHERE xcord_label IS NOT NULL; นี้ทำงานได้ดีสำหรับป้ายกำกับทั้งหมดแต่สร้างผิดมองเส้นผู้นำสำหรับป้ายชื่อWHERE ST_X(geom) < xcord_labelWHERE ST_X(geom) > xcord_label ไม่มีใครรู้วิธีการวางสายผู้นำสำหรับป้ายกำกับอย่างเหมาะสมWHERE ST_X(geom) > xcord_labelหรือไม่ มีวิธีใดบ้างในการอ้างถึงพิกัด xmax ของฉลาก?

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 ใช้การสแกน …

1
การเพิ่มประสิทธิภาพการสืบค้นฐานข้อมูล Postgis
ฉันมีชุด rasters ในรูปแบบ DTED ซึ่งฉันโหลดลงในฐานข้อมูล PostGIS โดยใช้เครื่องมือบรรทัดคำสั่ง raster2pgsql แรสเตอร์แต่ละตัวจะถูกจัดเก็บไว้ในแถวและอธิบายด้วยค่าลบและค่าของรูปแบบแรสเตอร์ ตอนนี้ฉันต้องการสร้างฟังก์ชั่นฐานข้อมูลที่ใช้ลองจิจูดและละติจูดของจุดและส่งกลับค่าของพิกเซลที่สอดคล้องกับจุดนี้ ปัญหาที่ฉันมีคือมันใช้เวลาค่อนข้างมากในการทำเช่นนั้น (3-4 วินาที) เพราะฐานข้อมูลทำงานบนบอร์ด Odroid ฉันรู้ว่าชุดข้อมูลที่ฉันดำเนินการค่อนข้างใหญ่ (rasters ครอบคลุมพื้นที่ทั้งหมดในสหราชอาณาจักร) แต่เนื่องจากฉันไม่คุ้นเคยกับ PostgreSQL และ PostGIS มากฉันสงสัยว่ามันสามารถทำได้เร็วกว่า นี่คือสิ่งที่ฉันทำไปแล้ว: SELECT ST_Value(rast, ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326)) FROM ( SELECT * FROM rasters WHERE rast && ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326) ) …

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 แทน โปรดทราบว่าคะแนนจะถูก จำกัด ให้อยู่ในบรรทัด นอกจากนี้จุดที่ถูกต้องสามารถอยู่ในจุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดซึ่งในกรณีที่ไม่จำเป็นต้องแยกบรรทัด (เว้นแต่มีจุดอื่น ๆ ที่ไม่สอดคล้องกับจุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดเดียวกัน) บรรทัดย่อยต้องรักษาทิศทางและคุณลักษณะของตนเองไว้ …

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