ระบบสารสนเทศทางภูมิศาสตร์

ถามตอบสำหรับนักทำแผนที่นักภูมิศาสตร์และผู้เชี่ยวชาญด้าน GIS

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) ) …

2
บันทึกหลายเลเยอร์จาก QGIS ไปยังฐานข้อมูล SpatiaLite หรือไม่
แต่ละครั้งที่ฉันบันทึกเลเยอร์จาก QGIS เป็น spatialite มันจะยืนยันในการสร้าง db ใหม่ (ถ้าคุณเลือก db ที่มีอยู่คุณจะถูกถามว่าจะยกเลิกหรือแทนที่) ฉันต้องการจัดทำเลเยอร์ทั้งหมดของโครงการเป็นฐานข้อมูล spatialite เดียวสำหรับการแจกจ่าย ฉันคิดว่าฉันสามารถใช้เครื่องมือ sqlite ดั้งเดิมเพื่อรวมเลเยอร์จากแต่ละไฟล์ แต่มันก็ดีที่ไม่ต้องทำเช่นนั้น
10 qgis  spatialite 

1
การอ้างอิงทางภูมิศาสตร์โดยใช้ GDAL และ Python?
ฉันต้องการที่จะ georeference แรสเตอร์ที่ใช้และpython GDALแนวทางปัจจุบันของฉันคือการโทรgdal_translateและgdalwarpใช้os.systemและรายการจุดควบคุมภาคพื้นดินที่น่าเกลียด ฉันต้องการวิธีการทำสิ่งนี้ภายในpythonจริงๆ นี่เป็นกระบวนการปัจจุบันที่ฉันใช้: import os os.system('gdal_translate -of GTiff -gcp 1251.92 414.538 -7.9164e+06 5.21094e+06 -gcp 865.827 107.699 -7.91651e+06 5.21104e+06 "inraster.tif" "outraster1.tif"') os.system('gdalwarp -r bilinear -tps -co COMPRESS=NONE "outraster2.tif" "outraster3.tif"') มีก่อนหน้านี้คือคำถามและคำตอบจาก 2012 ซึ่งระบุว่าสามารถเข้าถึงได้หลังจากการนำเข้าgdal_translate gdalฉันไม่แน่ใจว่าล้าสมัยหรือว่าผิด แต่เมื่อฉันรันfrom osgeo import gdalฉันไม่เห็นgdal.gdal_translateตัวเลือก ฉันไม่รู้ว่ามันมีอยู่หรือไม่ แต่ฉันจะรักถ้าฉันสามารถแปลและปฏิเสธ rasters ในแบบ pythonic ตัวอย่างเช่น: # translate gcp_points = [(1251.92, …

1
จะวัดระยะทางระหว่างจุดต่าง ๆ ตามระดับความสูงได้อย่างไร?
ฉันต้องสามารถวัดระยะทางระหว่างจุดต่าง ๆ ได้ แต่ต้องคำนวณระยะทางในการสัมพันธ์กับระดับความสูง จุดต่างๆเป็นบ้านของนักเล่าเรื่องตั้งแต่ศตวรรษที่ 19 และสถานที่ที่กล่าวถึงในเรื่องราวของพวกเขา ระยะทางจึงต้องเป็น "ระยะทางเดิน" เส้นทางตามหุบเขาจะสั้นกว่าเส้นทางบนภูเขาแม้ว่าระยะทางตรงที่แท้จริงจะสั้นกว่า ที่แนบมาเป็นภาพหน้าจอที่แสดงความคิดของฉัน ในภาพเส้นทาง A และ C จะถูกคำนวณให้สั้นกว่าเส้นทาง B คะแนนมาจากไฟล์ CSV แต่ฉันยังมีเลเยอร์แรสเตอร์พร้อมข้อมูลระดับความสูง
10 qgis  distance 

3
การจัดการเนื้อหาสำหรับผู้ใช้หลายคนภายในแอพ ArcGIS Collector หรือไม่?
ฉันมีคนหลายร้อยคนที่รวบรวมข้อมูล ผู้ใช้แต่ละคนมีการเข้าสู่ระบบ ArcGIS Online ฉันต้องการกรองเนื้อหาที่มองเห็นได้ในแอพ ArcGIS Collector ตามผู้ใช้ที่ล็อกอิน แต่ไม่ต้องการให้ภาระการบำรุงรักษามีแผนที่เว็บที่แตกต่างกันสำหรับผู้ใช้แต่ละคน ฉันมีเขตข้อมูลในบริการคุณลักษณะซึ่งระบุว่าผู้ใช้ควรเห็นข้อมูลใด คำแนะนำเกี่ยวกับวิธีการบรรลุเป้าหมายนี้?

2
รูปแบบการทำความสะอาดบล็อกจาก LIDAR ในเมือง (บล็อกยกระดับจากถนน)
เรามีLIDAR DEM 1 เมตรจากเมือง สามารถดาวน์โหลดเซ็ตย่อยขนาดเล็กได้จากลิงค์นี้ : ภาพหน้าจอนี้แสดง DEM แบบดิบพร้อมจานสีเทา (เข็มขัดที่เข้มกว่าคือถนนและสี่เหลี่ยมสีเทาและขาวเป็นบล็อค): สิ่งนี้สอดคล้องกับสถานที่ในเมืองซานโตโดมิงโกซึ่งสามารถเห็นได้ในภาพหน้าจอของ Google นี้: โดยเฉลี่ยแล้วบล็อกจะ "สูงขึ้น" โดยประมาณ 2 เมตรจากถนนซึ่งไม่เป็นความจริง เราต้องการให้ DEM สะอาดเพื่อสร้างเครือข่ายสตรีมและดัชนีความเปียกชื้นของภูมิประเทศ (TWI) ด้วย DEM ที่ให้มา (เราไม่ได้มีวงดนตรีต้นฉบับจากเลเซอร์สแกนเนอร์) ที่เครือข่าย hydrgraphic ดูเหมือนจะเป็นไปตามรูปแบบสี่เหลี่ยมและ TWI ผลในรูปแบบบล็อก ภาพเหล่านี้แสดงผลลัพธ์: นี่คือผลลัพธ์เครือข่ายสตรีมที่สร้างขึ้นด้วยr.watershedในGrass GIS: และนี่คือผลลัพธ์ TWI สร้างโดยSAGA: เราได้ลองขั้นตอนบางอย่างเพื่อแก้ไขความไม่ถูกต้องนี้โดยไม่สำเร็จ: 1) เครื่องมือ denoising เราใช้r.denoiseเครื่องมือในGrass GISแต่มีปัญหาบางอย่างกับการติดตั้งโมดูล เรารันมันอีกครั้งโดยใช้เชลล์ใน Windows และได้รับข้อความหน่วยความจำไม่เพียงพอ 2) ตัวกรอง เราวิ่งประเภทที่แตกต่างกันของตัวกรอง (low-pass …

2
กำลังคำนวณเขตข้อมูลวันที่ด้วยวันที่วันนี้จาก datetime.date.today ()?
ฉันกำลังทำงานในส่วนของเครื่องมือที่จะใช้ arcpy.CalculateField_management เพื่อเพิ่มวันที่ปัจจุบันลงในตารางที่เกี่ยวข้อง ฉันเดินข้าม interwebs ไปทั่วและดูเหมือนจะไม่สามารถแก้ไขปัญหานี้ได้ เมื่อใช้รหัสนี้ฉันจะได้รับค่า "12:00:00 AM" input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013' today = datetime.date.today() dte = today.strftime('%m/%d/%Y') arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON") เมื่อใช้รหัสนี้ฉันจะได้รับค่า "06/19/1905" ตั้งแต่วันนี้ของ "10/07/2014" input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013' today = datetime.date.today() dte = str(today) arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON") มีความคิดเกี่ยวกับสิ่งที่ฉันทำผิดหรือเปล่า? ฉันต้องการหลีกเลี่ยงการใช้เคอร์เซอร์อัปเดต แต่จะทำเช่นนั้นหากเป็นตัวเลือกสุดท้าย

5
การนับรูปหลายเหลี่ยมที่ทับซ้อนกันจากหนึ่ง Shapefile โดยใช้ ArcGIS Desktop?
ฉันมีไฟล์รูปร่างที่มี 16,400 รูปหลายเหลี่ยม รูปหลายเหลี่ยมแต่ละอันแสดงให้เห็นถึงการขยายพันธุ์ของนกทั้งโลก ตอนนี้ฉันต้องนับรูปหลายเหลี่ยมที่ทับซ้อนกัน ฉันลองกับสหภาพและยุบ (นับยูเนี่ยน) แต่สหภาพไม่ทำงานสำหรับรูปหลายเหลี่ยมจำนวนมาก จากนั้นฉันพยายามที่จะคลิปทวีป แต่ก็ไม่ได้ผลเพราะรูปหลายเหลี่ยมจำนวนมาก ยิ่งกว่านั้นฉันลองวิธีนี้แต่ก็ไม่ประสบความสำเร็จ ดังนั้นฉันขอให้คุณฉันมีวิธีการนับรูปหลายเหลี่ยมที่ทับซ้อนกันถ้ารูปหลายเหลี่ยม 16400 มีอยู่ในรูปร่างเดียวหรือไม่ ฉันทำงานกับ 10.0 และสามารถทำงานกับ 10.2 โซลูชันของ ArcPy นั้นยอดเยี่ยมเช่นกัน ในขณะนี้ฉันกำลังคิดเกี่ยวกับการสร้างแหอวนและวนซ้ำแถวของ shp ด้วย 16400 polygons และเขียน 1 ไปยังเขตข้อมูลค่าของเซลล์ fishnet หากรูปหลายเหลี่ยมอยู่ในเซลล์นี้และใช้แถวถัดไป (รูปหลายเหลี่ยม) และ ถ้าสิ่งนี้อยู่ในเซลล์ fishnet ด้วย +1 แต่ฉันไม่รู้ว่านี่เป็นวิธีแก้ปัญหาที่ดีหรือไม่และจะรู้ได้อย่างไร หรือฉันต้องเรียนรู้ R เพื่อใช้วิธีนี้ ผลลัพธ์: ควรเป็นรูปร่างที่คุณมีรูปหลายเหลี่ยมใหม่จากส่วนที่ทับซ้อนกันและเขตข้อมูลที่มีการนับการทับซ้อน ดังนั้นในที่สุดควรมีไฟล์รูปร่างที่คุณสามารถดูจำนวนนกที่พบในสถานที่เดียวกัน

2
การแสดงเส้นรูปหลายเหลี่ยมที่อยู่ติดกันแทนการซ้อนทับกัน
ฉันต้องการที่จะแสดงรูปหลายเหลี่ยมที่อยู่ติดกันกับการทำงานของสายที่อยู่ข้างๆกันไม่ได้เป็นหนึ่งที่ด้านบนของอื่น ๆ สำหรับขอบเขตที่ใช้ร่วมกันที่ ฉันไม่ต้องการแก้ไขขอบเขตของรูปหลายเหลี่ยม - ต้องการเปลี่ยนวิธีการแสดงเท่านั้น เป็นไปได้ไหม

3
จะสร้างเส้นชั้นความสูงจากข้อมูลจุดโดยใช้ QGIS ได้อย่างไร?
ฉันใช้ QGIS 2.4.0 และฉันมีรูปร่างของจุดที่มีข้อมูลระดับความสูงและพิกัด X และ Y ฉันใช้ระบบปฏิบัติการ windows 7 ความคิดคือการสร้างเส้นชั้นความสูง SHP โดยใช้ข้อมูลจุดของฉัน คำถามของฉันคือ: ฉันจะเริ่มทำงานกับปัญหานั้นได้อย่างไร มีฟังก์ชั่นหรือไม่? มีกระบวนการทีละขั้นตอนหรือไม่?
10 qgis  dem  elevation  contour 

1
การตั้งค่ารายการแบบหล่นลงในพารามิเตอร์ของเครื่องมือสคริปต์ Python หรือไม่
ฉันกำลังพยายามสร้างเครื่องมือจากสคริปต์ python ที่ฉันเขียนซึ่งจะสร้างรายการที่ฉันสร้างขึ้นและใช้เป็นเมนูแบบเลื่อนลงในเครื่องมือเสร็จเป็นหนึ่งในอินพุต (ดูรูปที่แนบมาตัวอย่าง): รายการที่ฉันใช้เป็นรายการขนาดใหญ่ที่มีเมืองทั้งหมดในรัฐเวอร์มอนต์และฉันสร้างมันในสคริปต์จากตาราง (ดูรหัสด้านล่าง) ฉันสงสัยว่าปัญหาของฉันในขณะนี้เป็นเพียงการตั้งค่าคุณสมบัติเครื่องมือเพื่อใช้รายการนี้และใช้เพื่อสร้างรายการแบบหล่นลงสำหรับผู้ใช้ นี่คือบล็อกของรหัสที่สร้างรายการเพื่อใช้ในพารามิเตอร์ - มีใครเห็นปัญหาใด ๆ ของการใช้รหัสนี้หรือไม่? import arcpy arcpy.env.workspace = "Z:\\OPS\\TechnicalServices\\Culverts\\GetCulverts\\GetCulverts.gdb" towns = "Database Connections\\GDB_GEN.sde\\GDB_Gen.VTRANS_ADMIN.townindex" arcpy.MakeFeatureLayer_management(towns,"towns_lyr") NameList = [] NameListArray = set() rows = arcpy.SearchCursor("towns_lyr") for row in rows: value = row.getValue("TOWNNAME") if value not in NameListArray: NameList.append(value) town = NameList town = arcpy.GetParameterAsText(0) …

1
วิธีเพิ่มการระบุแหล่งที่มาบนเลเยอร์ GeoJSON จากแผ่นพับ?
ฉันต้องใช้ GeoJSON Layer บนแผนที่ Leaflet ของฉัน นี่คือตัวอย่างรหัสของฉัน: function onEachFeature(feature, layer) { if (feature.properties && feature.properties.popupContent) { layer.bindPopup(feature.properties.popupContent); } } myGeoJsonLayer = L.geoJson(data, { pointToLayer: function (feature, latlng) { return L.circleMarker(latlng, geojsonMarkerOptions); }, onEachFeature: onEachFeature }); myGeoJsonLayer.addTo(map); TOC.addOverlay(myGeoJsonLayer, "My GeoJSON Layer"); ทั้งหมดใช้งานได้ ตอนนี้ฉันต้องการเพิ่มที่มาในเลเยอร์ของฉัน แต่อย่างไร


3
ความถี่เฉลี่ยของการเปลี่ยนรหัสไปรษณีย์สำหรับที่อยู่ที่ระบุในช่วงปี
นี่เป็นคำถามที่ตอบยากด้วยความแม่นยำระดับสูง แต่มีคนคาดคะเนว่าฉันจะมีโอกาสได้รับรหัสไปรษณีย์สำหรับที่อยู่ที่กำหนดไว้ในช่วงหนึ่งปีหรือไม่ ตัวอย่างเช่นคุณจะบอกว่าโอกาสนี้คือ: a) ~ 10% b) ~ 1% c) ~ .1% d) ~ .01% เพียงแค่พยายามเข้าใจความมั่นคงของสิ่งเหล่านี้สำหรับรหัสที่ฉันกำลังเขียน ถ้าคำตอบคือ ~ 10% ฉันจะดำเนินการแตกต่างจากที่เป็น ~ .01%

2
ใช้อักขระตัวแทนสำหรับส่วนหัวคอลัมน์ในเครื่องคำนวณฟิลด์ QGIS หรือไม่
ฉันรู้ว่าคุณสามารถใช้อักขระตัวแทนสำหรับฟิลด์เช่นนี้ (ในเครื่องคำนวณฟิลด์): case when "column" ILIKE '%example%' then 1 else 0 end คุณสามารถทำสิ่งที่คล้ายกันสำหรับส่วนหัวของคอลัมน์ตัวเอง? ฉันถามสิ่งนี้เพราะฉันเข้าร่วมหลายเลเยอร์ (ใช้คุณสมบัติJoins ) และมันจะทำให้ง่ายขึ้นสำหรับฉันที่จะแก้ไขชุดตัวกรองหนึ่งชุดแทนที่จะแก้ไขตัวกรองหลายตัวเนื่องจากชื่อคอลัมน์จะต้องรวมชื่อเลเยอร์ที่เข้าร่วมด้วย ฉันใช้ QGIS 2.2

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