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

Shapely เป็นแพ็กเกจ Python แบบโอเพ่นซอร์สสำหรับการก่อสร้างและการวิเคราะห์วัตถุทางเรขาคณิตระนาบ 2D ที่ใช้ร่วมกับระบบข้อมูลทางภูมิศาสตร์

2
ใช้ OGR และหุ่นดีขึ้นอย่างมีประสิทธิภาพหรือไม่ [ปิด]
ฉันกำลังมองหาคำแนะนำบางอย่างเกี่ยวกับวิธีทำให้โค้ดไพ ธ อนของฉันมีประสิทธิภาพมากขึ้น ปกติแล้วประสิทธิภาพไม่สำคัญสำหรับฉัน แต่ตอนนี้ฉันกำลังทำงานกับไฟล์ข้อความของสถานที่ในสหรัฐอเมริกาที่มีมากกว่า 1.5 ล้านคะแนน ด้วยการตั้งค่าที่กำหนดจะใช้เวลาประมาณ 5 วินาทีในการรันการทำงานในจุดเดียว ฉันต้องทำให้ตัวเลขนี้ลง ฉันใช้ python GIS สามแพ็คเกจในการดำเนินการที่แตกต่างกันเล็กน้อยในจุดและส่งออกไฟล์ข้อความที่คั่นด้วยใหม่ ฉันใช้ OGR เพื่ออ่านรูปร่างเขตแดนของเคาน์ตีและเข้าถึงเรขาคณิตของขอบเขต หุ่นดีตรวจสอบเพื่อดูว่ามีจุดอยู่ในมณฑลใด ๆ เหล่านี้ ถ้ามันอยู่ภายในเดียวฉันใช้ Python Shapefile Library เพื่อดึงข้อมูลแอ็ตทริบิวต์จาก. dbf ขอบเขต ฉันจะเขียนข้อมูลบางอย่างจากทั้งสองแหล่งลงในไฟล์ข้อความ ฉันสงสัยว่าการไร้ประสิทธิภาพอยู่ในการวนรอบ 2-3 ชั้น ... ไม่ค่อยแน่ใจว่าจะทำอย่างไรกับมัน ฉันกำลังมองหาความช่วยเหลือโดยเฉพาะกับใครบางคนที่ประสบกับการใช้งานแพ็กเกจทั้งสามนี้เพราะนี่เป็นครั้งแรกที่ฉันได้ใช้มัน import os, csv from shapely.geometry import Point from shapely.geometry import Polygon from shapely.wkb import loads …

3
หุ่นดีไม่ได้ติดตั้งอย่างถูกต้อง
pip install shapelyฉันกำลังพยายามที่จะใช้หุ่นดีบนเครื่องใหม่และลองทั้งการติดตั้งได้จากแหล่งที่ใช้ติดตั้งบนหน้าเว็บของตนและใช้ ทุกอ้างอิงฉันพยายามที่จะทำให้จากห้องสมุดยกเว้นโยนข้อผิดพลาดfrom shapely import * WindowsError: [Error 126] The specified module could not be foundมีใครบ้างที่มีประสบการณ์คล้ายกันเมื่อพยายามใช้ประโยชน์จาก Shapely และคิดว่าจะให้มันทำงานได้อย่างถูกต้องได้อย่างไร? โยนข้อผิดพลาด Python: WindowsError: [Error 126] The specified module could not be found สภาพแวดล้อม: Windows 7 64-bit Python 2.7

4
วิธีการเขียนรูปทรงหุ่นดีเพื่อรูปร่างไฟล์ได้อย่างไร
ใครสามารถสาธิตวิธีง่าย ๆ ในการเขียนโครงสร้างข้อมูลเรขาคณิตจากหุ่นดีไปเป็นไฟล์รูปร่างได้ ฉันสนใจรูปหลายเหลี่ยมโดยเฉพาะอย่างยิ่งกับรูและ linestrings มันจะมีประโยชน์ถ้าอยู่ห่างจาก arcpy (เช่น osgeo, pyshp เป็นต้นจะดีกว่า)

3
การแปลงรูปวัตถุ Shapely Polygon และ MultiPolygon
มีวิธีง่าย ๆ ในการแปลงวัตถุรูปร่างดี (คือ Polygons และ MultiPolygons) จากการฉายภาพหนึ่งไปยังอีกภาพหนึ่งโดยไม่ต้องขุดไปรอบ ๆ และแยกพิกัดด้วยมือหรือไม่? ในความเป็นจริงฉันไม่สนใจว่าพวกเขาจะเป็นวัตถุที่มีรูปร่างดีในตอนนี้ฉันแค่ต้องการส่งผ่านฟีเจอร์และการฉายภาพ ฟังก์ชั่นประเภทนี้มีอยู่หรือไม่หรือต้องมีการเข้ารหัสด้วยมือหรือไม่?

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 องศา) …

2
รับพื้นที่รูปหลายเหลี่ยมโดยใช้ geopandas?
ด้วยgeopandas GeoDataFrameรูปหลายเหลี่ยมที่มีชุดของฉันต้องการที่จะได้รับพื้นที่ในกม. sq ของแต่ละคุณสมบัติในรายการของฉัน นี่เป็นปัญหาที่พบได้บ่อยและวิธีแก้ปัญหาที่แนะนำตามปกติในอดีตเคยใช้shapelyและpyprojโดยตรง (เช่นที่นี่และที่นี่ ) มีวิธีการทำสิ่งนี้อย่างบริสุทธิ์geopandasหรือไม่?

2
การซ้อนทับรูปหลายเหลี่ยมด้วยหุ่นดี
ฉันพยายามจับรูปหลายเหลี่ยมที่ไม่ทับซ้อนกันทั้งหมดที่ระบุด้านล่างโดยใช้ Shapely (รูปหลายเหลี่ยม A, B & C) ยิ่งกว่านั้นฉันหวังว่าจะทำเช่นนั้นโดยไม่ต้องทำซ้ำทดสอบจุดตัดเป็นต้นคำตอบที่ยอมรับสำหรับคำถามนี้เป็นการแสดงออกถึงวิธีการของ PostGIS แต่ดูเหมือนว่า 'สหภาพ' หมายถึงสิ่งที่แตกต่างกันสำหรับผู้คนที่แตกต่างกัน

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 …

1
เหตุใดการจัดระยะสั้นของ GEAP จึงไม่ทำงานอย่างที่คาดไว้
ฉันพยายามถ่ายสองบรรทัดโดยใช้ Shapely / Geopandas แต่ผลลัพธ์ของการจัดเรียงนั้นแปลกมาก ฉันเหนื่อย : import geopandas as gpd from shapely.geometry import * from shapely.ops import snap lines1 = gpd.GeoDataFrame.from_file('lines1.shp') lines1 = lines1.to_crs({'init': 'epsg:2227'}) lines2 = gpd.GeoDataFrame.from_file('lines2.shp') lines2 = lines2.to_crs({'init': 'epsg:2227'}) res = lines1 lines2_union = lines2.geometry.unary_union res.geometry = res.geometry.apply(lambda x: snap(x, lines2_union, 14)) res.to_file('result.shp', driver="ESRI Shapefile") และได้รับผลลัพธ์นี้: …

2
วิธีทำให้รูปหลายเหลี่ยมแรสเตอร์เป็นรูปหลายเหลี่ยมได้ดี
ฉันกำลังค้นหาโซลูชันไพ ธ อร์โอเพนซอร์ซเพื่อแปลงแรสเตอร์เป็นรูปหลายเหลี่ยม (ไม่มี ArcPy) ฉันรู้จักฟังก์ชัน GDAL เพื่อแปลง raster เป็นรูปหลายเหลี่ยมและนี่คือคู่มือ: http://pcjericks.github.io/py-gdalogr-cookbook/raster_layers.html#polygonize-a-raster-band อย่างไรก็ตามฉันคาดหวังว่าผลลัพธ์จะเป็นรูปหลายเหลี่ยมหรือวัตถุใด ๆ ที่อยู่ในหน่วยความจำชั่วคราวไม่ได้บันทึกเป็นไฟล์ มีแพ็คเกจหรือรหัสเพื่อจัดการกับปัญหานี้หรือไม่? หาก raster ได้รับการประมวลผลในอาเรย์ numpy วิธีการจะแสดงอยู่ด้านล่าง

4
พื้นที่ใน KM จากรูปหลายเหลี่ยมของพิกัด
ฉันมีรูปหลายเหลี่ยมจากพิกัดใน (python shapely) ที่มีลักษณะเช่นนี้ POLYGON ((24.8085317 46.8512821, 24.7986952 46.8574619, 24.8088238 46.8664741, 24.8155239 46.8576335, 24.8085317 46.8512821)) ฉันต้องการคำนวณพื้นที่ของรูปหลายเหลี่ยมนี้ใน km ^ 2 อะไรจะเป็นวิธีที่ดีที่สุดในการทำสิ่งนี้ใน Python?
14 python  polygon  area  shapely 

1
การนับคุณสมบัติเป็นจุดตัดของ Shapely Polygons
ฉันมีgeopandas GeoDataFrameที่ประกอบด้วยหุ่นเชิดPolygonและMultiPolygonรูปปั้นนับร้อย รูปหลายเหลี่ยมซ้อนกันในหลายสถานที่ ฉันต้องการสร้างรูปทรงเรขาคณิตใหม่ที่มีการนับจำนวนของพวกเขาทับซ้อนกัน บางสิ่งเช่นนี้ ใครบ้างมีความคิดสำหรับวิธีการวิธีการนี้ ฉันไม่สามารถเห็นทางเข้า ในที่สุดฉันต้องการน้ำหนักรูปหลายเหลี่ยมโดยเฉพาะอย่างยิ่งเพื่อให้รูปหลายเหลี่ยมบางส่วนอาจมีค่าเป็น 2 ด้วยตัวเอง การทำเช่นนี้กับshapelyเขตข้อมูล Z อาจจะดี นอกเหนือ: ฉันไม่ได้ผูกติดอยู่กับห้องสมุดใด ๆ เป็นพิเศษมันเป็นที่ที่ฉันไปจบแล้ว พิกัดในรูปทรงเรขาคณิตเหล่านี้คือพิกัดพิกเซลจริง ๆ แล้วฉันกำลังสะดุดเพื่อทำให้แรสเตอร์ซ้อนทับในรูปภาพอื่น ฉันต้องการทำให้รอยเท้าของฉันเล็กที่สุดเท่าที่จะเป็นไปได้เนื่องจากฉันต้องการที่จะสามารถปรับใช้สิ่งนี้กับเซิร์ฟเวอร์คลาวด์ ฯลฯ ซึ่งฉันอาจไม่สามารถติดตั้งสิ่งของแบบสุ่มได้

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

4
เชื่อมส่วนของแต่ละบรรทัดเป็นหนึ่งใน LineString โดยใช้หุ่นดี
ฉันใช้ Shapely ในงูหลามและฉันได้รับMultiLineStringของLinestringมากมาย ฉันรับประกันได้ว่าLineStringวัตถุทั้งหมดนั้นเป็นเส้นตรงที่มีจุดยอดเพียง 2 จุดและพวกมันทั้งหมดเป็นส่วนหนึ่งของเส้นเดียว (ไม่มีกิ่งก้านสาขา) ฉันต้องการ "การเชื่อมต่อที่จุด" LineStringและสร้างเดียว ฉันต้องเขียนวิธีการเชื่อมแบบเรียกซ้ำเพื่อทำสิ่งนี้หรือมีวิธีที่เร็วกว่านี้หรือไม่?
13 python  shapely 

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