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

คำย่อสำหรับภาษาของแบบสอบถามที่มีโครงสร้าง ไวยากรณ์สำหรับการดึงและจัดการข้อมูลจากฐานข้อมูลเชิงสัมพันธ์

1
เข้าร่วมตามการทับซ้อนสูงสุดใน PostGIS / PostGresQL
ฉันมีรูปหลายเหลี่ยมสองชุดในสองตาราง ชุดทับซ้อนกัน สำหรับรูปหลายเหลี่ยมแต่ละอันในชุด A ฉันต้องการรับ ID ของรูปหลายเหลี่ยมในชุด B ที่ซ้อนทับกันมากที่สุด ฉันใช้ PostgreSQL กับส่วนขยาย PostGIS ฉันรู้เพียงพอเกี่ยวกับ SQL ที่จะรู้ว่าคุณสามารถเข้าร่วมได้ตามเงื่อนไขจริง / เท็จเท่านั้น ดังนั้นสิ่งนี้จะไม่ทำงาน: SELECT a.id as a_id, b.id as b_id, FROM a JOIN b ON max(ST_Area(ST_Intersection(a.geom, b.geom))) เนื่องจาก max () ไม่สามารถอยู่ในอนุประโยค ON ST_Intersects()คือการทดสอบจริง / เท็จดังนั้นฉันสามารถเข้าร่วมในนั้น แต่รูปหลายเหลี่ยมในชุดมักจะทับซ้อนที่มีมากกว่าหนึ่งรูปหลายเหลี่ยมที่อยู่ในชุด B และฉันต้องการที่จะรู้ว่าที่หนึ่งซ้อนทับมากที่สุด ST_Intersects น่าจะแค่คืนค่า ID ที่ทับซ้อนกันแรกที่เจอโดยไม่คำนึงถึงขอบเขตของการทับซ้อน ดูเหมือนว่ามันควรจะเป็นไปได้ แต่มันเกินฉัน …

4
การสอบถาม ST_Intersection ช้า
ฉันพยายามแยกระหว่างสองชั้น: Polyline layer แสดงถนนบางเส้น (ประมาณ 5500 แถว) ชั้นรูปหลายเหลี่ยมที่แสดงบัฟเฟอร์รูปร่างผิดปกติรอบ ๆ จุดที่น่าสนใจต่างๆ (ประมาณ 47,000 แถว) ท้ายที่สุดสิ่งที่ฉันพยายามทำคือตัดคลิป polylines ไปยังบัฟเฟอร์ (บางครั้งซ้อนทับกัน) เหล่านี้แล้วสรุปความยาวรวมของถนนที่อยู่ในบัฟเฟอร์แต่ละอัน ปัญหาคือสิ่งที่กำลังทำงานช้า ฉันไม่แน่ใจว่าจะใช้เวลานานเท่าใด แต่ฉันเพิ่งยกเลิกการสืบค้นหลังจาก> 34 ชั่วโมง ฉันหวังว่าบางคนสามารถชี้ให้เห็นว่าฉันทำผิดพลาดกับแบบสอบถาม SQL ของฉันหรือสามารถชี้ให้ฉันเป็นวิธีที่ดีกว่าในการทำเช่นนี้ CREATE TABLE clip_roads AS SELECT ST_Intersection(b.the_geom, z.the_geom) AS clip_geom, b.* FROM public."roads" b, public."buffer1KM" z WHERE ST_Intersects(b.the_geom, z.the_geom); CREATE INDEX "clip_roads_clip_geom_gist" ON "clip_roads" USING …

2
วิธีวนซ้ำแบบวนซ้ำผ่านจุดตัดรูปหลายเหลี่ยมหลักเพื่อรับรูปหลายเหลี่ยมที่มีขนาดเล็กที่สุด (เด็ก) โดยไม่ทับซ้อนกันอย่างไร
ฉันกำลังดิ้นรนกับปัญหาสองสามวันและตระหนักว่าหลายคนก็ติดเมื่อหัวข้อเป็นจุดตัดใน PostGIS (v2.5) นั่นเป็นเหตุผลที่ฉันตัดสินใจถามคำถามทั่วไปที่มีรายละเอียดและทั่วไปมากขึ้น ฉันมีตารางต่อไปนี้: DROP TABLE IF EXISTS tbl_foo; CREATE TABLE tbl_foo ( id bigint NOT NULL, geom public.geometry(MultiPolygon, 4326), att_category character varying(15), att_value integer ); INSERT INTO tbl_foo (id, geom, att_category, att_value) VALUES (1, ST_SetSRID('MULTIPOLYGON (((0 6, 0 12, 8 9, 0 6)))'::geometry,4326) , 'cat1', 2 ); INSERT …
11 postgis  sql 

3
เปลี่ยนรูปหลายเหลี่ยม“ ถนัดมือ” สำหรับ SQL 2008 (เรียงลำดับรูปหลายเหลี่ยมกลับด้าน)
ฉันมีสองสามร้อยรูปร่าง ( polygons และmultipolygons) แต่ละประกอบด้วยจุดนับหมื่นที่ฉันพยายามเข้าสู่ SQL 2008 น่าเสียดายที่รูปร่างที่ฉันพยายามนำเข้านั้นเป็น "ถนัดขวา" (เส้นรอบวงของแต่ละอันนั้นถูกลากตามเข็มนาฬิกาไปรอบ ๆ จุดที่มี) เซิร์ฟเวอร์ SQL สันนิษฐานว่าเป็นรูปร่าง "ถนัดซ้าย" (ทวนเข็มนาฬิการอบด้านใน) อย่างน้อยสำหรับgeographyประเภท ซึ่งหมายความว่า SQL ถือว่าฉันพยายามเลือกทั้งโลกยกเว้นรูปร่างของฉัน บางคนอธิบายว่านี่เป็นรูปร่าง "ด้านในออก" จากMSDNซึ่งน่าผิดหวังไม่ได้บอกว่าจะใช้การวางแหวนแบบใด: ถ้าเราใช้geographyชนิดข้อมูลเพื่อเก็บอินสแตนซ์อวกาศเราจะต้องระบุการวางแนวของวงแหวนและอธิบายตำแหน่งของอินสแตนซ์ได้อย่างถูกต้อง หากคุณใช้การวางแนววงแหวนที่ไม่ถูกต้องใน SQL 2008 จะเกิดปัญหากับข้อผิดพลาดต่อไปนี้ ข้อผิดพลาด. NET Framework เกิดขึ้นระหว่างการดำเนินการตามขั้นตอนที่ผู้ใช้กำหนดเองหรือ "ภูมิศาสตร์" รวม: Microsoft.SqlServer.Types.GLArgumentException: 24205: อินพุตที่ระบุไม่ได้แสดงอินสแตนซ์ภูมิศาสตร์ที่ถูกต้องเพราะเกินซีกโลกเดียว ตัวอย่างภูมิศาสตร์แต่ละอันต้องอยู่ในซีกโลกเดียว สาเหตุทั่วไปสำหรับข้อผิดพลาดนี้คือรูปหลายเหลี่ยมที่มีการวางแนววงแหวนที่ไม่ถูกต้อง การนำเข้ารูปทรงgeometryแทนการใช้geographyงานได้ดี แต่ฉันต้องการใช้geographyถ้าทำได้ ใน SQL 2012 ดูเหมือนว่าจะไม่สำคัญพอที่จะแก้ไขปัญหานี้ แต่ฉันผูกติดกับปี 2008 ฉันจะแปลงรูปร่างได้อย่างไร

3
ใช้ ST_Difference เพื่อลบคุณลักษณะที่ทับซ้อนกันหรือไม่
ฉันกำลังพยายามใช้ ST_Difference เพื่อสร้างชุดรูปหลายเหลี่ยม (การประมวลผล trimmedparcelsnew) ที่ไม่มีพื้นที่ใด ๆ ที่ครอบคลุมโดยรูปหลายเหลี่ยมชุดอื่น (test.single_geometry_1) โดยใช้ PostGis 2.1 (และ Postgres SQL 9.3) นี่คือคำถามของฉัน: CREATE TABLE processing.trimmedparcelsnew AS SELECT orig.id, ST_Difference(orig.geom, cont.geom) AS difference FROM test.single_geometry_1 cont, test.multi_geometry_1 orig; แต่รูปหลายเหลี่ยมที่เกิดขึ้นยังไม่ได้ถูกตัดแต่ง แต่ดูเหมือนว่าจะถูกแยกออกจากกันโดยที่พวกมันตัดกับเลเยอร์อื่น ฉันลองใช้ตัวเลือกโดยไม่ใส่ผลลัพธ์ลงในตารางและทุกอย่างอื่นที่ฉันสามารถนึกได้ แต่ดูเหมือนว่าฉันจะไม่สามารถใช้ฟังก์ชันนี้ได้ ฉันแนบรูปภาพผลลัพธ์แล้ว หลังจากความคิดเห็นฉันได้ลองเพิ่มส่วนคำสั่ง WHERE แล้ว ฉันต้องการพัสดุที่ไม่มีทางแยกและบริเวณที่ตัดกันของพัสดุอื่นถูกลบ (layer test.single_geometry แสดงถึงการปนเปื้อนที่ฉันต้องการลบออกจากพัสดุของฉัน) ฉันลองทางแยก แต่แน่นอนว่าฉันต้องการทางแยกที่ไม่ใช่จริงดังนั้นตอนนี้ฉันจึงลองแยกกัน ฉันได้ลองเพิ่มต้นกำเนิดลงในตารางของฉันแล้ว แต่เอกสารสำหรับ ST_Difference ( …

2
ฉันจะดำเนินการเปลี่ยนรูปทางภูมิศาสตร์และพารามิเตอร์ 3 พารามิเตอร์ใน SQL Server 2012 ได้อย่างไร
ฉันมีตารางที่มีคอลัมน์ละติจูดลองจิจูด (NAD27) อยู่ในนั้น ฉันคำนวณคอลัมน์อีกสองคอลัมน์คือ X และ Y ซึ่งแทนตำแหน่ง Web Mercator (WGS84) ขณะนี้ฉันกำลังใช้ Arcmap เพื่อทำสิ่งนี้โดยใช้การเปลี่ยนรูปทางภูมิศาสตร์ที่แนะนำสำหรับพื้นที่การศึกษา - การเปลี่ยนรูปทางภูมิศาสตร์ 3 พารามิเตอร์ (จุดศูนย์กลางทางภูมิศาสตร์) - เพื่อเปลี่ยนจาก NAD27 เป็น WGS84 ฉันต้องการทำสิ่งนี้อย่างสมบูรณ์ภายใน Sql Server 2012 จากสิ่งที่ฉันสามารถบอกได้ SQL Server ไม่รองรับการแปลงข้อมูลจากกล่อง ไม่มีใครรู้เกี่ยวกับห้องสมุด Sql ที่รองรับการเปลี่ยนรูปทางภูมิศาสตร์นี้? ฉันต้องการใช้ค่าสัมประสิทธิ์แบบเดียวกันใน Sql ที่ฉันใช้ใน Arcmap ฉันยังต้องการฉายภาพจาก WGS84 lat / long เข้าสู่เว็บ Mercator ฉันเห็นสูตรนี้มีการใช้งานใน javascriptแต่ถ้ามีคนมีขั้นตอนการจัดเก็บ Sql ที่ทำเช่นนี้มันจะดีมาก

3
แสดงความคิดเห็นออกแบบสอบถามคำจำกัดความใน ArcGIS Desktop?
ฉันใช้ Definition Queries เป็นจำนวนมากในชีวิต GIS ทุกวัน แต่หนึ่งในหลาย ๆ สิ่งที่ฉันพบว่าน่ารำคาญเกี่ยวกับ ArcMap คือการไม่สามารถแสดงความคิดเห็นเกี่ยวกับ Definition Queries ได้ ฉันต้องการมีตัวเลือกนี้เนื่องจากบางครั้งฉันต้องการเปิด / ปิด Definition Query หรือต้องการมีหลายแบบสอบถามใน Shapefile เดียว แต่เพียงครั้งเดียวที่ใช้งานอยู่ จนถึงตอนนี้ฉันมักจะมีเอกสารแผ่นจดบันทึกอยู่เบื้องหลังและคัดลอกและวางตามความจำเป็น แต่ทางออกที่ดีที่สุดคือการใช้แท็บแบบสอบถามความหมายในคุณสมบัติเลเยอร์เพื่อแทนที่เอกสารนี้ ฉันอาจมีคำถามที่แตกต่างกันหลายครั้งในชั้น แต่ทุกความเห็น ดังที่ฉันเข้าใจแล้วแบบสอบถามความหมายจะถูกเขียนใน SQL จะแสดงความคิดเห็นใน SQL ผมเชื่อว่าคุณทั้งสองเริ่มต้นเส้นด้วย: -หรือห้อมล้อมคำสั่งในวงเล็บ: {} ฉันได้ลองทั้งสองอย่างนี้แล้ว: Original: "DATA_AQUISITION" LIKE 'MISSING XSECTION' Dashes: --"DATA_AQUISITION" LIKE 'MISSING XSECTION' Brackets: {"DATA_AQUISITION" LIKE 'MISSING XSECTION'} …

4
ค้นหาเพื่อนบ้านที่ใกล้ที่สุดระหว่างสองตารางที่มีตำแหน่งจุดใน SpatiaLite หรือไม่
ฉันเริ่มเล่นกับ SpatiaLite วันนี้และพบปัญหาแล้ว สำหรับตำแหน่งของจุดแต่ละจุดที่เก็บไว้ในตารางฉันต้องการเลือกหนึ่งจุดที่ใกล้ที่สุด (ระยะทางเชิงเส้น) จาก tableTwo จนถึงตอนนี้ฉันคิดวิธีแก้ปัญหาแบบเงอะงะที่ใช้ประโยชน์จาก VIEW: CREATE VIEW testview AS SELECT A.id , B.myValue, Distance(A.Geometry, B.Geometry) AS distance FROM tableOne AS A, tableTwo AS B WHERE distance < 10000 ORDER BY A.Id, distance; แล้ว: SELECT * FROM testview WHERE distance = (SELECT MIN(distance) FROM testview AS t …

1
ประสิทธิภาพที่เพิ่มขึ้นจากดัชนี GIST สำหรับจุดในรูปหลายเหลี่ยมแบบสอบถาม
ฉันมีสองตาราง: สถานที่ตั้ง (id, region_id, the_geom) และภูมิภาค (id, the_geom) สำหรับจุดที่ตั้งแต่ละแห่งฉันต้องการระบุภูมิภาคที่อยู่ใน: UPDATE locations SET region_id = (SELECT id FROM regions WHERE ST_Within(locations.the_geom,regions.the_geom) ); มันสมเหตุสมผลหรือไม่ที่จะสร้างดัชนี GIST ที่จุดตำแหน่ง? ฉันจะสร้างดัชนีในรูปหลายเหลี่ยมภูมิภาค แต่ฉันไม่แน่ใจเกี่ยวกับประเด็นนี้ มันจะเพิ่มความเร็วของแบบสอบถามหรือไม่

4
สามารถเข้าถึงภาษาของ SQL ผ่านเครื่องมือ ArcGIS ได้ในระดับใด
คำถามนั้นฟังดูซ้ำซ้อนมาก ... ไม่ว่าจะด้วยเหตุผล ใดก็ตามฉันถูกขอให้สำรวจการใช้ SQL ใน ArcGIS เราใช้ SDE DB สำหรับการจัดเก็บด้านเซิร์ฟเวอร์และการจัดการฐานข้อมูล / การแก้ไขขนาดใหญ่ทั้งหมด อย่างไรก็ตามฉันพยายามที่จะเจาะลึกลงไปถึงวิธีที่ SQL รวมอยู่ในเครื่องมือของ ArcGIS มีหมายเหตุในคู่มืออ้างอิง SQL Queryของ ArcGIS 10 ที่ระบุว่าไวยากรณ์ SQL อย่างชัดเจนไม่ทำงานเมื่อใช้เครื่องมือ Field Calculator ฉันพบว่ามันน่าผิดหวังมากเพราะมันมีประโยชน์มากที่จะสามารถดึงและตัดข้อมูลจากฐานข้อมูลโดยตรงเมื่อทำการคำนวณค่าของฟิลด์ อะไรคือข้อ จำกัด และข้อผิดพลาดที่ใหญ่ที่สุดที่อาจเกิดขึ้นเมื่อพยายามใช้ประโยชน์จาก SQL ใน ArcGIS? เครื่องมือใดที่ใช้งานได้ดีที่สุดเมื่อรวมเข้ากับ SQL หากต้องการตัวอย่างเพื่อทำให้คำถามนี้ชัดเจนยิ่งขึ้นฉันกำลังพยายามติดตามจำนวนจุดสนใจที่เป็นประเภทบางประเภทในภูมิภาคที่กำหนด แต่ละจุดมีแอตทริบิวต์ที่อธิบายประเภทและภูมิภาค โซลูชันปัจจุบันของฉันเกี่ยวข้องกับการใช้เคอร์เซอร์อย่างหนักสำหรับการนับและการดึงข้อมูล แต่ผู้ใช้ชี้ให้เห็นว่าการสืบค้น SQL แบบง่ายสามารถทำได้ทั้งหมดและอื่น ๆ น่าเสียดายที่ฟังก์ชั่นนี้ไม่ได้มีให้สำหรับสิ่งนี้ หรือมันคืออะไร?

5
การวิเคราะห์ GIS เพื่อค้นหารูปทรงเรขาคณิตที่ซ้ำกัน
ฉันมีไฟล์รูปร่างขนาดใหญ่ที่มีอาคารและบ้านทั้งหมดของเมืองที่ฉันทำงานด้วย (ประมาณ 90,000 ฟีเจอร์) ข้อมูลของอาคาร / บ้านจะถูกบันทึกโดยวิศวกรสำรวจของเมืองและเนื่องจากการปฏิบัติที่ไม่ดีและการเข้าถึงผู้สำรวจที่แตกต่างกันไปยังข้อมูลนั้นอาคาร / บ้านจำนวนมากได้รับการบันทึกสองครั้งและแสดงในแผนที่เป็นรายการที่ซ้ำกัน บางส่วนมีการทำซ้ำอย่างแน่นอน (ปรากฏเป็นรายการเดียวกัน) ขณะที่รายการอื่นจะทำสำเนาด้วยช่องว่างระหว่างวัตถุสองรายการ (เช่นวัตถุหนึ่งอยู่ภายในอีกรายการหนึ่ง - ดูภาพหน้าจอที่แนบมา) ฉันต้องการล้างข้อมูลนั้นเพื่อให้มีเพียงอาคาร / บ้านที่ถูกต้องในเมืองดังนั้นคำถามของฉันคือ: มีการวิเคราะห์ GIS หรือนิพจน์ SQL ที่ฉันสามารถเรียกใช้เพื่อค้นหาคุณลักษณะที่ทำซ้ำทั้งหมด (ทั้งคุณสมบัติที่แน่นอนและคุณสมบัติที่อยู่ภายในอื่น ๆ ) ฉันมีทั้ง ArcGIS และ QGIS ดังนั้นฉันจึงเปิดรับทุกข้อเสนอแนะของคุณ

2
เลือก layer by attribute โดยใช้คำสั่ง SQL LEN () ใน ArcMap?
ฉันต้องการสอบถามความยาวของคอลัมน์สตริงและคิดว่าจะใช้: LEN([ColumnName]) > 5 อย่างไรก็ตามนั่นไม่ได้ผลเลย ฉันกำลังสอบถามตารางใน fGDB ใน ArcMap 10.1 ดังนั้นสัญกรณ์ของ [ColumnName] มีคนช่วยฉันได้ไหม ข้อความแสดงข้อผิดพลาดที่ฉันได้รับจาก ArcGIS คือฉันกำลังใช้คำสั่ง SQL ที่ไม่ถูกต้อง

2
ไวยากรณ์ GDAL SQL เพื่อเพิ่มฟิลด์การใส่ค่า
ฉันพยายามสร้างฟิลด์ใหม่ในตารางคุณลักษณะของฉันและใส่ค่าจากฟิลด์อื่นหลังจากแปลงจากอักขระเป็นจำนวนเต็ม แต่ไม่สามารถรับไวยากรณ์ที่ถูกต้องได้ ฉันเรียกใช้สิ่งนี้เป็นเชลล์สคริปต์ใน MSYS cd D:/GIS_DataBase/CorineLC/shps_app_and_extr/ myfile=extr_and_app.shp name=${myfile%.shp} ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num int(3)" ogrinfo $myfile -sql "UPDATE TABLE $name SET code_num = CONVERT(code_06 As int(3))" ข้อความผิดพลาด (MSYS): Kay@KAY-PC /c/users/kay/desktop/bash $ sh calc_field_shp.sh Warning 6: Unsupported column type 'int'. Defaulting to VARCHAR INFO: Open of `extr_and_app.shp' …
9 sql  ogr 

2
ค้นหาจุดที่อยู่ในชุดพิกัด
ฉันมีฐานข้อมูล PostGIS และฉันต้องการค้นหาคะแนนที่อยู่ในบางภูมิภาค (กล่องที่มีขอบเขต) ฉันมีพิกัดสองชุดซึ่งฉันจะได้รับทั้งสี่จุดสี่เหลี่ยมผืนผ้าที่เกิดขึ้นในกล่อง (ถ้าจำเป็น) คอลัมน์ข้อมูลของฉันเป็นชื่อ 'จุด' และเป็นจุดพิมพ์ด้วย อย่างไรก็ตามมีการระบุพิกัดสี่ชุด (ละติจูด / ลองจิจูด) และรับคะแนนทั้งหมดที่อยู่ในกล่อง หรือระบุจุดสองจุดแล้วปล่อยให้ฐานข้อมูลจัดทำมุมของสี่เหลี่ยมและกลับจุดภายใน ในกรณีที่ฉันไม่ชัดเจนว่าฉันต้องการบรรลุอะไร เทียบเท่ากับ 'วานิลลา' sql ถ้าฉันมีเขตละติจูดและลองจิจูดแทนจุดจะเป็น: SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax ปรับปรุงแก้ไข: ฉันกำลังพยายามแก้ปัญหาของ underdark ตอนแรกฉันไม่มี ST_MakePoint constuctor (ตอนนี้ฉันทำ) และฉันยังคงได้รับข้อผิดพลาดที่คล้ายกันมาก SELECT * FROM …
9 postgis  sql  point  extents 

1
กำหนดค่า Z เพื่อเริ่มต้นและสิ้นสุดของบรรทัด PostGIS
ฉันมีตารางเส้นในฐานข้อมูล PostGIS ของฉันและตารางที่มีระดับการสลับสำหรับการเริ่มต้นและสิ้นสุดของแต่ละบรรทัด เป้าหมายของฉันคือการสร้างการสร้างเส้น 3 มิติในตารางของฉันจากข้อมูลกลับของฉัน ฉันรู้ว่าฉันสามารถใช้ st_makeline เพื่อสร้างบรรทัดใหม่ด้วยจุดสามมิติที่จุดเริ่มต้นและสิ้นสุด แต่ฉันหวังว่าจะสามารถเรียกใช้การอัปเดตได้โดยใช้ค่า Z สำหรับการเริ่มต้นและสิ้นสุด สิ่งนี้สามารถทำได้หรือง่ายกว่าที่จะสร้างเส้นใหม่
9 postgis  3d  sql 

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