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

Fiona เป็น Pythonic API ใหม่ที่เรียบร้อยและเป็นระเบียบของ OGR

10
จะเปลี่ยนคุณสมบัติทั้งหมดในชุดข้อมูลเวกเตอร์ได้อย่างไร
สมมุติว่าฉันรวม Shapefile เข้าด้วยกันและฟีเจอร์ทั้งหมดจะเปลี่ยนจุดยอดเป็นจำนวนคงที่ อะไรคือวิธีที่ง่ายที่สุดในการเปลี่ยนฟีเจอร์ทั้งหมด (x, y)ของจุดยอด) โดยการเลื่อนตามอำเภอใจ? ฉันมีไฟล์มากมายที่ฉันจะใช้การแก้ไขนี้กับดังนั้นคำตอบ Bash / OGR จะเป็นที่ต้องการ :) สุดท้ายผมสิ้นสุดการใช้ Spatialite ShiftCoordsนี้มันมีฟังก์ชั่นที่ดี อย่างไรก็ตามด้ายมีข้อมูลมาก! ขอบคุณทุกคน!

4
มีประสิทธิภาพมากขึ้น Spatial อวกาศเข้าร่วมใน Python โดยไม่ต้องมี QGIS, ArcGIS, PostGIS, ฯลฯ
ฉันกำลังพยายามทำการรวมเชิงพื้นที่เหมือนตัวอย่างที่นี่: มีตัวเลือกหลามเพื่อ "เข้าร่วมแอตทริบิวต์ตามตำแหน่งที่ตั้ง" หรือไม่ . อย่างไรก็ตามวิธีการนั้นดูเหมือนไม่มีประสิทธิภาพ / ช้าจริงๆ แม้แต่การวิ่งด้วยความสุภาพ 250 คะแนนใช้เวลาเกือบ 2 นาทีและมันล้มเหลวอย่างสิ้นเชิงกับรูปร่างที่มี> 1,000 คะแนน มีแนวทางที่ดีกว่านี้ไหม? ฉันต้องการทำสิ่งนี้ทั้งหมดใน Python โดยไม่ต้องใช้ ArcGIS, QGIS, ฯลฯ ฉันยังสนใจที่จะทราบว่าเป็นไปได้ที่จะใช้แอตทริบิวต์ SUM (เช่นจำนวนประชากร) ของทุกจุดที่อยู่ในรูปหลายเหลี่ยมและเข้าร่วมปริมาณนั้นกับรูปหลายเหลี่ยมรูปร่างหรือไม่ นี่คือรหัสที่ฉันพยายามแปลง ฉันได้รับข้อผิดพลาดในบรรทัดที่ 9: poly['properties']['score'] += point['properties']['score'] ซึ่งพูดว่า: TypeError: ประเภทของตัวถูกดำเนินการที่ไม่รองรับสำหรับ + ​​=: 'NoneType' และ 'float' ถ้าฉันแทนที่ "+ =" ด้วย "=" มันจะทำงานได้ดี แต่นั่นไม่ได้ผลรวมฟิลด์ ฉันได้ลองทำสิ่งเหล่านี้ด้วยจำนวนเต็ม แต่ก็ล้มเหลวเช่นกัน with …

1
กำลังคำนวณสถิติโฟกัสสำหรับพื้นที่ใกล้เคียงพิเศษหรือไม่
ฉันต้องการคำนวณสถิติโฟกัสสำหรับแต่ละแรสเตอร์ของแต่ละเซลล์ภายในละแวกบ้านตามเกณฑ์ที่กำหนด ความเป็นมา - ฉันมีแรสเตอร์ไบนารีสองตัวแต่ละตัวแสดงประเภทพืชที่น่าสนใจเพียงชนิดเดียว ฉันต้องการคำนวณเปอร์เซ็นต์ความครอบคลุมของพืชแต่ละชนิดภายใน (เช่น) 20 กม. ^ 2 ของเซลล์ใด ๆ ในพื้นที่ศึกษาของฉัน (ผลรวม / เซลล์ทั้งหมดในละแวกใกล้เคียง) ปัญหาคือฉันไม่สามารถใช้วงกลมหรือสี่เหลี่ยมจัตุรัสรอบ ๆ แต่ละเซลล์ได้เพราะถ้าฉันทำพื้นที่ค้นหาที่ใช้ในการคำนวณผลรวมจะรวมพื้นที่นอกเขตการศึกษาของฉันด้วย ข้อยกเว้นนี้มีความสำคัญเนื่องจากสถิติจะถูกใช้เป็นข้อมูลป้อนเข้าสำหรับแบบจำลองที่อยู่อาศัยและพื้นที่ที่อยู่นอกพื้นที่ศึกษาของฉันไม่สามารถพิจารณาที่อยู่อาศัยที่เป็นไปได้ รวมถึงพวกเขาจะให้ฉันสถิติที่ผิดพลาด ดังนั้นสิ่งที่ฉันnกำหนดโดยจำนวนของเซลล์ที่จำเป็นเพื่อให้ครอบคลุมพื้นที่เท่ากับขนาดใกล้เคียงของฉันต้องการ) ที่ตรงตามเกณฑ์ของฉัน เกณฑ์ที่ว่าพวกเขาจะไม่ตกอยู่ในพื้นที่ทำให้เป็นเมือง ฉันคิดว่าควรใช้รูปแบบเซลลูลาร์แบบอัตโนมัติ ฉันไม่เคยทำงานกับ CA มาก่อน ฉันเดาว่าสิ่งที่ฉันต้องการคืออะไรเช่นรหัสเริ่มต้นหรือจุดในทิศทางที่ถูกต้อง ตอบกลับความคิดเห็นด้านล่าง: สมมติว่าฉันกำลังคำนวณสถิตินี้สำหรับเซลล์บนขอบเขตของไซต์การศึกษาของฉัน ถ้าฉันกำหนดทุกพื้นที่นอกพื้นที่ศึกษาของฉันให้เป็นศูนย์ (หรือเพิกเฉย NoData) จากนั้นฉันจะได้รับสถิติที่แสดงถึงครึ่งหนึ่งของพื้นที่ครอบคลุมของสมองที่ฉันสนใจดังนั้นเปอร์เซ็นต์ครอบคลุมในพื้นที่ ~ 10 km ^ 2 แทนพื้นที่ 20 กม. ^ 2 เนื่องจากฉันกำลังศึกษาขนาดของบ้านเป็นสิ่งสำคัญ ละแวกใกล้เคียงต้องเปลี่ยนรูปร่างเนื่องจากเป็นวิธีการที่สัตว์ดู / ใช้ภูมิทัศน์ หากพวกเขาต้องการ …

1
ค้นหากลุ่มบรรทัดที่ใกล้ที่สุดเพื่อชี้โดยใช้หุ่นดีหรือไม่
พื้นหลัง จากจุดที่รู้จักฉันต้องสร้าง "ปริมณฑลที่มองเห็นได้" ใกล้เคียงที่สุดกับตารางของ MultiLineStrings ดังที่แสดงในแผนภาพ ฉันค้นหาไซต์นี้ด้วยคำศัพท์จำนวนหนึ่ง (เช่นขอบต่ำสุด, ขอบเขตต่ำสุด, เพื่อนบ้านที่อยู่ใกล้ที่สุด, คลิป, มีรูปหลายเหลี่ยม, การมองเห็น, snap, โหนดตัด, การติดตามเรย์, การเติมน้ำท่วม, ขอบเขตภายใน, เส้นทาง, ลำเรือเว้า) ไม่พบคำถามก่อนหน้านี้ที่ดูเหมือนจะตรงกับสถานการณ์นี้ แผนภาพ วงกลมสีเขียวคือจุดที่รู้จัก เส้นสีดำเป็นที่รู้จักกันในชื่อ MultiLineStrings เส้นสีเทาเป็นตัวบ่งชี้การกวาดแบบเรเดียลจากจุดที่รู้จัก จุดสีแดงคือจุดตัดที่ใกล้ที่สุดของการกวาดด้วยรัศมีและ MultiLineStrings พารามิเตอร์ จุดจะไม่ตัดกัน MultiLineStrings คะแนนจะถูกจัดให้อยู่กึ่งกลางชื่อใน MultiLineStrings MultiLineStrings จะไม่ล้อมรอบจุดทั้งหมดดังนั้นปริมณฑลจะเป็น MultiLineString จะมีตารางที่มี MultiLineStrings ประมาณ 1,000 (ปกติจะมีบรรทัดเดียวประมาณ 100 คะแนน) พิจารณาวิธีการ ดำเนินการกวาดแนวรัศมีด้วยการสร้างชุดของเส้นจากจุดที่รู้จัก (ที่, พูด, เพิ่มทีละ 1 องศา) …

3
สร้าง GeoJSON ด้วย Python
ฉันต้องการสร้างไฟล์ GeoJSON โดยทางโปรแกรมโดยใช้รูปหลายเหลี่ยมจาก shapefile แต่เพิ่มคุณสมบัติจากแอปพลิเคชันของฉันเอง สิ่งนี้สามารถทำได้อย่างง่ายดายสำหรับไฟล์รูปร่าง: def create_data_dayer(self,varlist, data): """ Creates a new shape to contain data about nodes. varlist is the list of fields names associated with the nodes. data is a list of lists whose first element is the geocode and the remaining elements are values of the …
16 python  geojson  ogr  fiona 

3
การละลายรูปหลายเหลี่ยมขึ้นอยู่กับคุณลักษณะด้วย Python (หุ่นดีฟิโอน่า)?
ฉันพยายามสร้างฟังก์ชั่นที่ทำสิ่งเดียวกันกับที่ QGIS "ละลาย" ฟังก์ชั่น ฉันคิดว่ามันจะง่ายสุด ๆ แต่ก็ดูเหมือนจะไม่ดี ดังนั้นจากสิ่งที่ฉันรวบรวมได้การใช้ฟิโอน่ากับหุ่นดีควรเป็นตัวเลือกที่ดีที่สุดที่นี่ ฉันเพิ่งเริ่มยุ่งเกี่ยวกับไฟล์เวคเตอร์ดังนั้นโลกนี้ก็ค่อนข้างใหม่สำหรับฉันและไพ ธ อนเช่นกัน สำหรับตัวอย่างเหล่านี้ฉันทำงานกับ County shapefile ก่อตั้งขึ้นที่นี่http://tinyurl.com/odfbanu ดังนั้นนี่คือรหัสบางส่วนที่ฉันรวบรวม แต่ไม่สามารถหาวิธีที่จะทำให้พวกเขาทำงานร่วมกันได้ สำหรับตอนนี้วิธีที่ดีที่สุดของฉันคือต่อไปนี้ขึ้นอยู่กับ: https://sgillies.net/2009/01/27/a-more-perfect-union-continued.html มันใช้งานได้ดีและฉันได้รับรายชื่อของ 52 รัฐเป็นรูปทรงเรขาคณิตที่ดี โปรดแสดงความคิดเห็นหากมีวิธีที่ตรงไปข้างหน้ามากขึ้นในการทำส่วนนี้ from osgeo import ogr from shapely.wkb import loads from numpy import asarray from shapely.ops import cascaded_union ds = ogr.Open('counties.shp') layer = ds.GetLayer(0) #create a list of unique …

6
การอ่านข้อมูลดิบลงใน geopandas
เป็นไปได้ไหมที่จะอ่านข้อมูลดิบลงใน a geopandas GeoDataFrame, a la a pandas DataFrame? ตัวอย่างเช่นงานดังต่อไปนี้: import pandas as pd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") pd.read_json(io.BytesIO(r.content)) สิ่งต่อไปนี้ไม่: import geopandas as gpd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") gpd.read_file(io.BytesIO(r.content)) กล่าวอีกนัยหนึ่งเป็นไปได้ไหมที่จะอ่านข้อมูลเชิงพื้นที่ที่อยู่ในหน่วยความจำโดยไม่บันทึกข้อมูลนั้นลงดิสก์ก่อน

3
เข้าใจการใช้ดัชนีเชิงพื้นที่กับ RTree หรือไม่?
ฉันมีปัญหาในการทำความเข้าใจการใช้ดัชนีเชิงพื้นที่กับ RTree ตัวอย่าง: ฉันมี 300 คะแนนบัฟเฟอร์และฉันจำเป็นต้องรู้พื้นที่จุดตัดบัฟเฟอร์แต่ละแห่งด้วยไฟล์รูปหลายเหลี่ยม ไฟล์รูปหลายเหลี่ยมมีมากกว่า 20,000 รูป มันแนะนำให้ฉันใช้ดัชนีเชิงพื้นที่เพื่อเร่งกระบวนการ ดังนั้น ... ถ้าฉันสร้างดัชนีเชิงพื้นที่สำหรับไฟล์รูปหลายเหลี่ยมของฉันมันจะ "แนบ" กับไฟล์ในทางใดทางหนึ่งหรือดัชนีจะยืนอยู่คนเดียวหรือไม่ นั่นคือหลังจากสร้างเสร็จฉันสามารถเรียกใช้ฟังก์ชันทางแยกของฉันบนไฟล์รูปหลายเหลี่ยมและรับผลลัพธ์เร็วขึ้นได้หรือไม่ ทางแยกจะ "เห็น" ว่ามีดัชนีเชิงพื้นที่และรู้ว่าต้องทำอย่างไร? หรือฉันจำเป็นต้องเรียกใช้บนดัชนีแล้วเชื่อมโยงผลลัพธ์เหล่านั้นกลับไปยังไฟล์รูปหลายเหลี่ยมเดิมของฉันผ่านทาง FID หรือบางอย่าง เอกสาร RTree ไม่ได้ช่วยฉันมาก (อาจเป็นเพราะฉันเพิ่งเรียนรู้การเขียนโปรแกรม) พวกเขาแสดงวิธีการสร้างดัชนีโดยการอ่านในจุดที่สร้างขึ้นด้วยตนเองแล้วทำการสอบถามกับจุดที่สร้างขึ้นด้วยตนเองอื่น ๆ ซึ่งจะส่งกลับรหัสที่มีอยู่ภายในหน้าต่าง มีเหตุผล. แต่พวกเขาไม่ได้อธิบายว่ามันจะเกี่ยวข้องกับไฟล์ต้นฉบับที่ดัชนีมาจากไหน ฉันคิดว่ามันต้องเป็นอย่างนี้: ดึงกล่องสี่เหลี่ยมสำหรับคุณลักษณะรูปหลายเหลี่ยมแต่ละรูปจากแฟ้มรูปหลายเหลี่ยมของฉันและวางไว้ในดัชนีเชิงพื้นที่โดยให้รหัสที่เหมือนกันกับรหัสในรูปแบบไฟล์ ค้นหาดัชนีนั้นเพื่อรับรหัสที่ตัดกัน จากนั้นเรียกใช้จุดแยกของฉันอีกครั้งบนคุณสมบัติเฉพาะในไฟล์รูปร่างดั้งเดิมที่ระบุโดยการสืบค้นดัชนีของฉัน (ไม่แน่ใจว่าฉันจะทำส่วนสุดท้ายนี้อย่างไร) ฉันมีความคิดที่ถูกต้องหรือไม่? ฉันไม่มีอะไรเลยหรือ ตอนนี้ฉันกำลังพยายามทำให้โค้ดนี้ทำงานบนหนึ่งไฟล์ shapefile ที่มีคุณสมบัติจุดเดียวเท่านั้นและหนึ่งไฟล์รูปหลายเหลี่ยมที่มี> 20,000 รูปหลายเหลี่ยมคุณสมบัติ ฉันกำลังนำเข้า Shapefiles โดยใช้ Fiona เพิ่มดัชนีอวกาศโดยใช้ RTree และพยายามทำจุดตัดโดยใช้ …

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 …

1
GeoPandas to_file () บันทึก GeoDataFrame โดยไม่ต้องมีระบบพิกัด
ฉันมี GeoPandas 0.2.1 py27_0 ฟิโอน่า 1.7.0 np110py27_1 Python 2.7.10 ติดตั้งในสภาพแวดล้อม Anaconda 2-4.1.1-Windows-x86 ฉันสามารถสร้างได้GeoDataFrameโดยการอ่านชุดข้อมูลอินพุตและใช้งานข้อมูล แต่การบันทึกชุดข้อมูลเอาต์พุตไม่รักษาระบบพิกัดไว้ import geopandas as gpd world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) world.to_file(driver='ESRI Shapefile',filename=r'C:\GIS\Temp\world_out.shp') สิ่งworld_out.shpนี้มีคุณลักษณะและสกีมาของซอร์สไฟล์รูปร่าง แต่ระบบพิกัดไม่ได้ถูกกำหนด ( <Unknown>) world_out.prjไฟล์ 0 KB และไม่ได้มีอะไร out = gpd.read_file(r'C:\GIS\Temp\world_out.shp') print out.crs >>> {} ฉันทดสอบเพื่อใช้งานโดยใช้ฟิโอน่าบริสุทธิ์และใช้งานได้ดีโดยรักษาcrsข้อมูลไว้: import fiona datasrc_path = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb' with fiona.drivers(): with fiona.open(datasrc_path,layer='cities') …

2
การสร้าง Shapely MultiPolygons จาก shapefile MultiPolygons
ฉันกำลังอ่าน shapefile โดยใช้ฟิโอน่า: with fiona.open('data/boroughs/boroughs_n.shp') as source: mpolys = [p for p in source] candidate = polys[0]['geometry'] สิ่งนี้ให้ฉันตามที่มีรายการของพิกัดและพิมพ์ 'MultiPolygon' อย่างไรก็ตามฉันไม่แน่ใจว่าจะใช้ข้อมูลพิกัดเพื่อสร้าง Shapely MultiPolygon ได้อย่างไรเนื่องจากต้องการ a sequence of exterior ring and hole list tuples: [((a1, ..., aM), [(b1, ..., bN), ...]), ...]. มีวิธีที่ 'ถูกต้อง' ในการทำเช่นนี้โดยใช้ Fiona และ Shapely หรือไม่?
12 python  shapely  fiona 

1
ไดรเวอร์ของ Fiona
แพคเกจหลามfionaมีไดรเวอร์ใดบ้าง? เมื่อฉันตรวจสอบคู่มือมันบอกว่า[...] and the possible formats are enumerated in the fiona.drivers list. อย่างไรก็ตามเมื่อฉันพิมพ์ในหลาม from fiona import drivers print drivers > <function drivers at 0x108763050> ฉันจะดู "เป็น" ที่ได้อย่างไร
12 python  fiona 

7
Fiona ImportError: DLL โหลดล้มเหลว
ฉันได้ใช้คำสั่งผสมที่ยอดเยี่ยม Shapely / Fiona บน Linux เรียบร้อยแล้ว แต่ตอนนี้ฉันต้องสร้างสภาพแวดล้อมการผลิตบน Windows และมีปัญหาเดียว เมื่อฉันพยายามนำเข้า fiona ฉันได้รับข้อผิดพลาดต่อไปนี้: หากฉันพยายามตรวจสอบการพึ่งพาของ ogrext.pdy โดยใช้ dependancy walker ดูเหมือนว่ากำลังพยายามโหลด GDAL รุ่น 1.10 dll และล้มเหลว แม้ว่าแปลกฉันติดตั้ง GDAL 1.9.2 และดูเหมือนว่าจะนำเข้าสู่หลามโดยไม่มีปัญหา (จาก osgeo นำเข้า gdal) ดังนั้นอาจไม่เกี่ยวข้องกับปัญหาการนำเข้า fiona นอกจากนี้ฉัน 100% ฉันดาวน์โหลดตัวติดตั้ง fiona สำหรับ python 2.7 เนื่องจากฉันรู้ว่าปัญหาอาจเกิดขึ้นได้หากคุณใช้ไฟล์. pyd สำหรับ python เวอร์ชั่นอื่น หมายเหตุฉันใช้การติดตั้ง python 2.7.5 แบบสแตนด์อโลนโดยไม่ใช้โปรแกรมติดตั้ง …

1
แปลง shapefile จากพิกัดที่ฉายโดยใช้ Python
มือใหม่ที่นี่ต้องดิ้นรนกับ GIS ฉันพยายามที่จะแผนที่ออกวอร์ดสำหรับเมือง Milwuakee โดยใช้ shapefiles พบได้บนเว็บไซต์ของพวกเขาเขตเว็บไซต์เขต ฉันติดตามกระทู้ที่นี่ด้วยความสำเร็จ รหัสของฉันให้: from pyproj import Proj, transform # wisconsing EPSG:32054 # epsg:4326 is for the entire world, wgs 84...not obvious inProj = Proj(init='epsg:32054') outProj = Proj(init='epsg:4326') x1,y1 = 2560131.496875003, 406816.434375003 x2,y2 = transform(inProj,outProj,x1,y1) print(x2,y2) กับเอาท์พุท -65.70220967836329 43.08590211722421 ปัญหานี้เป็นสิ่งที่ผิด The lon / lat สำหรับมิลวอกีคือ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.