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

GDAL (Geospatial Data Abstraction Library) เป็นไลบรารีตัวแปลโอเพนซอร์สและชุดของอรรถประโยชน์บรรทัดคำสั่งสำหรับการประมวลผลรูปแบบข้อมูลเชิงพื้นที่แรสเตอร์ ในฐานะห้องสมุดมันนำเสนอรูปแบบข้อมูลนามธรรมเดียวให้กับแอปพลิเคชันการโทรสำหรับทุกรูปแบบที่รองรับ นอกจากนี้ยังมาพร้อมกับโปรแกรมอรรถประโยชน์ commandline ที่มีประโยชน์มากมายสำหรับการแปลและประมวลผลข้อมูล

9
การเพิ่มฟิลด์ด้วยชื่อไฟล์เมื่อรวม Shapefiles กับ ogr2ogr?
ฉันกำลังรวมรูปร่างบางไฟล์และมีปัญหาบางอย่างใน QGIS ดังนั้นฉันจึงใช้ ogr2ogr โดยตรง ฉันกำลังทำสิ่งนี้อยู่ (ในชุด): ogr2ogr -overwrite %destination% %n1% ogr2ogr -update -append %destination% %n2% -nln all_new ogr2ogr -update -append %destination% %n3% -nln all_new ogr2ogr -update -append %destination% %n4% -nln all_new มันใช้งานได้ดี แต่ตอนนี้ฉันต้องมีใน shapefile ที่เกิดขึ้นซึ่งเป็นเขตที่มีชื่อของรูปร่างที่เป็นต้นฉบับที่ฉันผสาน ฟังดูไม่ยากมาก แต่ฉันก็ไม่สามารถทำมันได้ ใครช่วยได้บ้าง ขอขอบคุณ!
14 gdal  ogr2ogr 

3
ฉันจะแปลงพิกัดเลียนแบบเป็น lat / lng ได้อย่างไร
ฉันใหม่มากกับ GIS ฉันใช้gdalเพื่ออ่านใน landuse / landcover map และฉันต้องเลือก lat / lng ของชนิดของ land land บางชนิดเพื่อทำดัชนีในชุดข้อมูลอื่นซึ่งแสดงเป็น lat / lng เท่านั้น โชคไม่ดีฉันไม่เข้าใจรูปแบบของพิกัด x และ y ที่มอบให้ฉันจากการเปลี่ยนรูปทางภูมิศาสตร์โดยเฉพาะoriginXและoriginYด้านล่าง: geotransform = dataset.GetGeoTransform() originX = geotransform[0] originY = geotransform[3] การพิมพ์ค่าเหล่านี้ให้พิกัดเหมือน(447466.693808, 4952570.40529)กัน สิ่งเหล่านี้เกี่ยวข้องกับละติจูดและลองจิจูดดั้งเดิมอย่างไร แก้ไข: นี่เป็นตัวอย่างของงูหลามที่ทำให้ฉันได้รับสิ่งที่ฉันกำลังมองหา: srs = osr.SpatialReference() srs.ImportFromWkt(dataset.GetProjection()) srsLatLong = srs.CloneGeogCS() ct = osr.CoordinateTransformation(srs,srsLatLong) print ct.TransformPoint(originX,originY) …

3
Gdal: การตัดแรสเตอร์ด้วยแรสเตอร์อื่น
ฉันกำลังเขียนยูทิลิตี้ง่าย ๆ ในการครอบตัดไฟล์แรสเตอร์ geotiff หลายแบนด์ไปยังพื้นที่ (เล็กกว่า) เดียวกัน เมื่อใช้ gdalwarp ฉันสามารถครอบตัดไฟล์ได้อย่างง่ายดายโดยใช้รูปทรงการตัดรูปหลายเหลี่ยมเดียว: gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif อย่างไรก็ตามพื้นที่จริงที่ฉันต้องการคลิปจะถูกกำหนดไว้ในขั้นต้นเสมอโดยไฟล์แรสเตอร์ geotiff อื่นไม่ใช่ไฟล์รูปร่าง มันจะดีถ้าฉันสามารถใช้ขอบเขตของแรสเตอร์นั้นเป็นไฟล์รูปวาด แต่ฉันไม่แน่ใจว่าจะทำอย่างไร น่าแปลกใจที่สิ่งต่อไปนี้ใช้งานไม่ได้ (มันไม่ได้ทำให้เกิดข้อผิดพลาด แต่ก็ไม่ได้สร้างอะไร): gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif ดังนั้นคำถามของฉันคือมีวิธีให้แรสเตอร์gdalwarp -cutline? อีกวิธีหนึ่งมีฟังก์ชัน gdal อื่นที่สามารถคลิปแรสเตอร์โดยใช้แรสเตอร์อื่นได้หรือไม่ หากไม่มีสิ่งเหล่านี้เป็นไปได้มีวิธีที่ง่ายมากในการสร้างรูปร่างไฟล์ที่มีรูปหลายเหลี่ยมเดียวที่กำหนดโดยขอบเขตของแรสเตอร์หรือไม่? รหัสนี้จะถูกห่อหุ้มด้วยสคริปต์ไพ ธ อนที่กว้างขวางกว่าดังนั้นฉันสามารถใช้ยูทิลิตี้บรรทัดคำสั่ง gdal หรือการผูกไพ ธ อนใด ๆ สำหรับ gdal ในฐานะที่เป็นบันทึกด้านข้างฉันรู้ว่าฉันสามารถสร้างรูปทรงการตัดได้อย่างง่ายดายซึ่งครอบคลุมขอบเขตของแรสเตอร์ของฉันใน QGIS ฉันอาจเลิกทำหากไม่พบวิธีแก้ปัญหาที่ตรงไปตรงมา แต่ท้ายที่สุดฉันจะเลิกใช้ยูทิลิตีนี้ในหลายสิบถ้าไม่ใช่พื้นที่นับร้อยซึ่งเป็นส่วนหนึ่งของการวิเคราะห์อัตโนมัติขนาดใหญ่ดังนั้นฉันจึงไม่อยากจะเบื่อ ขั้นตอนแบบแมนนวลแม้ว่าจะง่ายมาก
14 python  raster  gdal  clip  gdalwarp 


2
วิธีรับ GDAL เพื่อสร้างสถิติสำหรับ GTiff ใน Python
ฉันสร้าง raster GeoTIFF ของตัวเองเป็นประจำกับ GDAL ใน Python เช่น: from osgeo import gdal from numpy import random data = random.uniform(0, 10, (300, 200)) driver = gdal.GetDriverByName('GTiff') ds = driver.Create('MyRaster.tif', 200, 300) band = ds.GetRasterBand(1) band.WriteArray(data) ds = band = None # save, close อย่างไรก็ตามเมื่อดูผลลัพธ์ด้วย ArcCatalog / ArcGIS มันจะเป็นสีดำหรือเทาเนื่องจากไม่มีสถิติ สิ่งนี้สามารถแก้ไขได้ด้วยการคลิกขวาที่แรสเตอร์และเลือก "คำนวณสถิติ ... …

2
Python, GDAL และสร้างตารางแอตทริบิวต์ raster
ฉันมีแรสเตอร์จำนวนเต็มที่ฉันต้องการสร้างตารางแอตทริบิวต์แรสเตอร์โดยใช้ Python และ GDAL ฉันสามารถสร้างตารางแอตทริบิวต์ GDAL raster ใน Python ดังนี้ >>> rat = gdal.RasterAttributeTable() ใช้งานได้ดีอย่างที่เราเห็น: >>> rat <osgeo.gdal.RasterAttributeTable; proxy of <Swig Object of type 'GDALRasterAttributeTableShadow *' at 0x0000000002A53D50> > ตารางที่สร้างขึ้นจึงไม่มีแถวหรือคอลัมน์: >>> rat.GetRowCount() 0 >>> rat.GetColumnCount() 0 ฉันสร้างคอลัมน์ชื่อ "ค่า" เพื่อเก็บค่าที่ไม่ซ้ำใน raster: >>> rat.CreateColumn("Value", gdalconst.GFT_Integer, gdalconst.GFU_MinMax) 0 นี่เป็นเรื่องปกติและมีการอัปเดตจำนวนคอลัมน์: >>> rat.GetColumnCount() 1 ตอนนี้ฉันต้องเพิ่มค่า …

2
แปลง. tif ด้วย. tfw เป็น GeoTiff หรือไม่
ฉันมีไฟล์รูปภาพ tif และไฟล์. tfw world (สร้างจากข้อมูล OSM ด้วย Mapertive) ฉันจะ (ใช้บรรทัดคำสั่ง linux) แปลงไฟล์นั้นเป็นไฟล์ GeoTIFF ได้อย่างไร (เช่นฉันต้องการมีไฟล์เดียวไม่ใช่ 2) ฉันแน่ใจว่าเป็นไปได้กับ gdal หรืออะไรบางอย่าง

6
ฉันจะวนซ้ำทุกเซลล์ในแรสเตอร์ต่อเนื่องได้อย่างไร
ดูลิงค์นี้สำหรับรายละเอียดเพิ่มเติม ปัญหา: ฉันต้องการวนรอบraster อย่างต่อเนื่อง (ที่ไม่มีตารางคุณลักษณะ), เซลล์โดยเซลล์และรับค่าของเซลล์ ฉันต้องการใช้ค่าเหล่านั้นและเรียกใช้ conditionals กับพวกเขาเลียนแบบขั้นตอนพีชคณิตแผนที่รายละเอียดด้านล่างโดยไม่ต้องใช้เครื่องคิดเลขแรสเตอร์ ตามคำขอของความคิดเห็นด้านล่างฉันได้เพิ่มรายละเอียดที่ให้ข้อมูลพื้นฐานเกี่ยวกับปัญหาและให้เหตุผลถึงความจำเป็นในการใช้วิธีการดังกล่าวในส่วนด้านล่างที่เรียกว่า "การวิเคราะห์ที่จำเป็น:" การวิเคราะห์ที่เสนอด้านล่างในขณะที่เกี่ยวข้องกับปัญหาของฉันโดยการให้ข้อมูลพื้นฐานไม่จำเป็นต้องมีคำตอบ ขอบเขตของคำถามเกี่ยวข้องกับการวนซ้ำผ่านแรสเตอร์อย่างต่อเนื่องเพื่อรับ / ตั้งค่าของเซลล์ การวิเคราะห์ที่จำเป็น: หากเงื่อนไขใด ๆ ต่อไปนี้เป็นจริงให้กำหนดค่าเซลล์เอาต์พุตเป็น 1 ให้ค่าเซลล์เอาต์พุตเป็น 0 เท่านั้นหากไม่มีเงื่อนไขใดที่จะสำเร็จ เงื่อนไข 1:หากค่าของเซลล์มากกว่าเซลล์บนและล่างให้ค่าเป็น 1: Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0) ไฟล์เคอร์เนลมีลักษณะดังนี้: 3 3 0 1 0 0 0 0 0 1 0 เงื่อนไข 2:หากค่าของเซลล์มากกว่าเซลล์ซ้ายและขวาให้ค่าเป็น 1: Con("raster" > …
13 python  raster  arcobjects  gdal  c# 

3
วิธีปรับสมดุลสีความสว่างและความเปรียบต่างให้ตรงกันบนแผนที่กระดาษที่สแกนหลายแผ่น
ฉันเป็นคนส่วนใหญ่เป็นเวกเตอร์ แต่สำหรับโครงการปัจจุบันฉันต้องทำงานกับแผนที่กระดาษสแกนเก่า ๆ จำนวนมาก (แผนที่ความเสียหายจากการระเบิด ww2 สำหรับลอนดอนถ้าคุณสนใจ!) เราสแกนและอ้างอิงทางภูมิศาสตร์แผนที่และตอนนี้ต้องการสร้างเลเยอร์คอมโพสิตแบบเรียงต่อกันสำหรับการแสดงบนเว็บไซต์ เราจะตัดขอบอย่างเห็นได้ชัดนั่นไม่ใช่ประเด็นที่นี่ ปัญหาคือมีความแตกต่างของสีของภาพและความสว่างระหว่างแผ่นแผนที่ ฉันค่อนข้างจะสูญเสียไปกับวิธีการทำให้เท่าเทียมกันเพื่อให้ได้ภาพที่กลมกลืนกัน ฉันอ่านค่าฮิสโตแกรมที่เท่ากัน แต่กล่องเครื่องมือปัจจุบันของฉัน (Manifold GIS, GDAL, GeoServer) ดูเหมือนจะไม่มีฟังก์ชั่นที่จำเป็น ตัวอย่างการสแกน 4 ครั้งที่อ้างอิงทางภูมิศาสตร์แล้ว:

3
ไวยากรณ์เครื่องคิดเลข gdal_calc แรสเตอร์สำหรับผู้ประกอบการตรรกะและฟังก์ชั่นอื่น ๆ
ในเอกสาร gdal_calcแต่มันคือคำสั่งเครื่องคิดเลขบรรทัดแรสเตอร์มีไวยากรณ์ numpy ต่อมามีตัวอย่างบางส่วนที่หนึ่งในนั้นคือ gdal_calc.py -A input.tif --outfile = result.tif --calc = "A * (A> 0)" --NoDataValue = 0 - หมายถึงการตั้งค่าศูนย์และด้านล่างเป็นโมฆะ น่าเสียดายที่ไม่มีตัวอย่างเกี่ยวกับตัวดำเนินการเชิงตรรกะเช่น: --calc = "A * (A> 0 และ A> B)" - หมายถึงการรักษาถ้า A ที่ใหญ่กว่าศูนย์และใหญ่กว่า B และตั้งค่าที่เหลือเป็นโมฆะ จากฟังก์ชั่นลอจิก Numpy / Scipyฉันคาดว่าจะเขียนตัวดำเนินการเชิงตรรกะเป็น: --calc = "A * logical_and (A> 0 A> B)" …
13 python  gdal  numpy  gdal-calc 

2
การดาวน์โหลดข้อมูลแรสเตอร์สู่ python จาก postgis โดยใช้ psycopg2
ฉันมีข้อมูลแบบแรสเตอร์ในตาราง postgres ที่ฉันต้องการใช้เป็น python ในรูปแบบ numpy ฉันใช้ psycopg2 เพื่อเชื่อมต่อกับฐานข้อมูล ฉันสามารถดาวน์โหลดข้อมูล แต่กลับมาเป็นสตริง (อาจเป็นเลขฐานสองต่อเนื่อง) ไม่มีใครรู้วิธีการใช้สายนี้และแปลงเป็นอาร์เรย์ numpy? ฉันสำรวจตัวเลือกอื่น ๆ เพื่อดาวน์โหลดแรสเตอร์เช่นใช้ st_astiff และเข้ารหัสเพื่อดาวน์โหลดไฟล์ hex และใช้ xxd แต่มันไม่ทำงาน ฉันยังคงได้รับข้อผิดพลาด 'rt_raster_to_gdal: ไม่สามารถโหลดไดรเวอร์ GDAL เอาต์พุต' และฉันไม่ได้รับอนุญาตให้ตั้งค่าตัวแปรสภาพแวดล้อมเพื่อให้สามารถเปิดไดรเวอร์ได้ TL, DR: ต้องการนำเข้าข้อมูลแรสเตอร์เข้าสู่อาร์เรย์ numpy (โดยใช้ python)

1
เธรด OGR / GDAL ส่งผลให้มีการใช้งาน core ต่ำ
ฉันพยายามประมวลผลข้อมูลแรสเตอร์โดยใช้ ogr / gdal และฉันไม่สามารถใช้ประโยชน์จากคอร์ทั้งหมดในเครื่องได้ เมื่อฉันเรียกใช้กระบวนการบนแกนเดียวฉันได้รับประโยชน์ 100% ของแกนนั้น เมื่อฉันพยายามที่จะแบ่งออกเป็นมัลติคอร์ (ในตัวอย่างด้านล่างโดย chunking x ชดเชยและวางไว้ในคิว) ฉันได้รับการใช้ประโยชน์ที่น่าสงสารในแต่ละ 8 แกนของฉัน ดูเหมือนว่าจะเพิ่มการใช้ประโยชน์ได้สูงสุด 100% ในแต่ละคอร์ (เช่น 12.5% ​​สำหรับแต่ละคอร์) ฉันกังวลว่าการใช้แหล่งข้อมูลเดียวกันคือคอขวด แต่ฉันก็ทำซ้ำไฟล์แรสเตอร์ต้นแบบสำหรับแต่ละคอร์ ... และการใช้งานคอร์ยังคงอึอยู่ สิ่งนี้ทำให้ฉันเชื่อว่า ogr หรือ gdal ทำตัวเหมือนทรัพยากรที่ใช้ร่วมกันในคอขวด แต่ฉันไม่พบสิ่งใดทางออนไลน์เกี่ยวกับเรื่องนั้น ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก! นี่คือฟังก์ชัน "ผู้ช่วยเหลือ" ที่ทำงานภายในแต่ละเธรดผู้ทำงาน: def find_pixels_intersect_helper(datasource, bounds_wkt, x_min, x_max): bounds = ogr.CreateGeometryFromWkt(bounds_wkt) rows_to_write = [] for …

3
จะเพิ่มการรองรับไดร์เวอร์ FileGDB (ไฟล์ Esri gdb API) ใน fiona ได้อย่างไร?
มีคำถามมากมายเกี่ยวกับเรื่องนั้น แต่ไม่มีใครแก้ปัญหาของฉันได้ ฉันมีเครื่องด้วย: Windows 7 x64 Python 3.4.3 x 64 GDAL ติดตั้งgdalinfo --version --> GDAL 1.11.4, released 2016/01/25; gdal ถูกติดตั้งจากล้อGDAL-1.11.4-cp34-none-win_amd64.whlจากที่นี่ ติดตั้ง GDAL ไว้C:\Python34\Lib\site-packages\osgeoแล้ว ที่นั่นฉันมีไฟล์. exe หลายไฟล์สำหรับไฟล์ gdal และ ogr และ. pyd ฟิโอน่าติดตั้ง: ถูกติดตั้งจากล้อFiona-1.6.3-cp34-none-win_amd64.whlจากเว็บไซต์เดียวกัน ฉันสามารถเรียกใช้รหัสนี้และทำงานได้สำเร็จ: import gdal import ogr from gdalconst import * shp = r"C:\Data\GIS\PTS.shp" driver = ogr.GetDriverByName('ESRI Shapefile') dataset …

2
การตั้งค่า 0 ใน GeoTIFF เป็น nodata โดยใช้ GDAL?
มีวิธีตั้งค่าพิกเซล 0 ค่าทั้งหมดในแรสเตอร์เป็นโนดาต้าโดยใช้ GDAL หรือไม่ ฉันต้องการใช้ fillnodata เพื่อเติมหลุมบางส่วน แต่หลุมถูกตั้งค่าเป็น 0 ดังนั้นฉันต้องลบออกก่อน
13 raster  gdal 

4
ไม่มีโมดูลชื่อ 'osgeo'
ฉันได้ติดตั้ง GDAL และตรวจสอบในบรรทัดคำสั่งมันใช้งานได้และเมื่อฉันเรียกใช้ gdal2tiles.py ในบรรทัดคำสั่งมันใช้งานได้ แต่เมื่อฉันเรียกใช้ไฟล์เดียวกัน gdal2tiles.py กับ python IDLE ฉันได้รับ "ไม่มีโมดูลชื่อ 'osgeo ข้อผิดพลาด "" คุณช่วยได้ไหม
13 python  gdal  osgeo  osgeo4w  pyqt4 

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