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

Python เป็นภาษาโปรแกรมโอเพ่นซอร์สที่ใช้ในโปรแกรม GIS จำนวนมาก

1
ได้รับระยะทางจากเครื่องมือวัด QGIS หรือไม่
ฉันสร้างปลั๊กอินสำหรับป้อนฐานข้อมูล Spatialite ด้วยรูปแบบการป้อนข้อมูล มีสองฟิลด์ซึ่งแสดงมิติต่ำสุด / สูงสุดของวัตถุ ในช่วงเวลาที่ฉันเรียกเครื่องมือวัด ( iface.actionMeasure().trigger()) ด้วยปุ่มกด "วัด" สองปุ่มให้คลิกส่วนข้อมูลและพิมพ์ค่าด้วยแป้นพิมพ์ของฉันลงในช่อง (QLineEdit) มีความเป็นไปได้ไหมที่หลังจากฉันคลิกขวา (เสร็จสิ้นการวัด) ด้วยเครื่องมือวัดค่าจะถูกกำหนดโดยอัตโนมัติไปยังฟิลด์ (ต่ำสุดหรือสูงสุด, QLineEdit)? เครื่องมือวัดการโทร (ใช้งานได้) คลิกซ้าย: เริ่มการวัด และ 4. ในครั้งเดียว: คลิกขวาและยอมรับมูลค่ารวมของเครื่องมือวัดลงในฟิลด์ขั้นต่ำ (QLineEdit) อัปเดต 1: วันหนึ่งหลังจากถามคำถามนี้ฉันมีความคิดที่จะมีเลเยอร์ความยาวซึ่งฉันสามารถใช้เป็นเครื่องมือวัด (ST_Length (geom)) ข้อดีคือคุณสามารถควบคุมได้อย่างเต็มที่ในการจัดการและรับข้อมูลจากมัน ข้อเสียคือเลเยอร์เพิ่มเติมในโครงการ เวิร์กโฟลว์อาจเป็น: คลิกการวัด: สลับแก้ไขเปิดใช้งาน "เพิ่มคุณสมบัติ" สร้าง linestring ที่แสดงมิติขั้นต่ำของวัตถุ ยืนยันการเปลี่ยนแปลงคำนวณความยาวของการคืนความยาว (ST_Length (geom)) ยอมรับความยาวกับ QLineEdit ปิดกล่องโต้ตอบและลบการคืนค่า (ลบจาก) แต่คำถามที่แท้จริงของฉันยังคงอยู่ มีวิธีรับค่าระยะทางจากเครื่องมือวัดโดยตรงหรือไม่ …

3
เพิ่มความเร็วในการแคชไทล์ (TileStache)
ฉันให้บริการแบบเรียงต่อกันแบบเวกเตอร์โดยใช้TileStacheฉันมีทุกอย่างที่ฉันต้องการ ข้อมูลของฉันถูกเก็บไว้ในPostgresและฉันใช้VecTilesผู้ให้บริการจะให้บริการGeoJSONกระเบื้อง ฉันต้องการแคชไทล์ทั้งหมดของฉันเพื่อให้ไทล์แสดงเร็วขึ้น ฉันใช้tilestache-seed.pyเพื่อเก็บแคชของฉัน ฉันกำลังเรียกใช้tilestache-seedบนเครื่องหลายเครื่อง Tilestache-seed ทำงานได้ดีมากจนถึงระดับการซูมที่ 13 แต่หลังจากนั้นมันใช้เวลาในการแคชนานเกินไป สำหรับการซูมระดับ 16 ฉันมีไทล์ 5023772 เพื่อแคชและฉันได้รับไทล์ 100k-200k ต่อวันในแต่ละเครื่อง ฉันจะทำให้ไทล์แคชของฉันเร็วขึ้นได้อย่างไร มีวิธีในการปรับแต่งtilestache-seed.pyและทำให้เมล็ดเร็วขึ้นหรือไม่ อัปเดต:ฉันได้ลองสร้างดัชนีเชิงพื้นที่บนตารางของฉัน (ในคอลัมน์รูปทรงเรขาคณิตและคอลัมน์ที่ใช้สำหรับกรองข้อมูลผ่านส่วนคำสั่ง where) และฉันยังไม่เห็นการเพิ่มความเร็วในการเรียงซ้อนที่สำคัญ ในอัตรานี้มีเพียงการซูม 17 เท่านั้นที่จะใช้เวลาหนึ่งเดือนและครั้งนี้จะเพิ่มขึ้นอย่างทวีคูณเมื่อฉันเลื่อนไปที่ซูม 21 อัปเดต 2:ฉันพยายามสร้างมุมมองที่เป็นรูปธรรมเช่นกันและไม่มีการเปลี่ยนแปลงที่สังเกตได้ดังนั้นการเพิ่มประสิทธิภาพฐานข้อมูลจึงไม่ทำงาน ฉันคิดว่าฉันจะต้องเพิ่มประสิทธิภาพ tilestache-seed.py ด้วยตนเองหรือคิดหาวิธีใหม่ในการแคชไทล์ ข้อมูลฮาร์ดแวร์ฉันใช้กระบวนการแคชกับพีซี 8 เครื่องซึ่งหนึ่งในนั้นคือ i7 ที่มี 32gb ram และ i3 ที่มี 4gb ram แต่พวกเขาทั้งสองให้ความเร็วในการแคชที่เท่ากันเกือบทั้งหมด (ประมาณ 100k แผ่นต่อวัน)

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
ทรัพยากร Python สำหรับการสำรวจระยะไกล? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันกำลังมองหาแหล่งข้อมูลที่ดี (MOOC หนังสือ ฯลฯ ) เพื่อสอน Python สำหรับแอปพลิเคชันการสำรวจระยะไกล ฉันคุ้นเคยกับhttp://www.rsgislib.org/ แล้ว - มีทรัพยากรอื่นอีกไหมสำหรับโปรแกรมเมอร์ Python รุ่นใหม่?

2
การเรียกปลั๊กอินการแก้ไขจากคอนโซล Python ของ QGIS
ฉันต้องการเรียกใช้ฟังก์ชั่นปลั๊กอินการแก้ไข QGIS (วิธี TIN) (Raster-> Interpolate) จากคอนโซลของงูหลาม ฉันไม่พบฟังก์ชันที่เกี่ยวข้องภายใน QGIS API หรือภายในรายการอัลกอริทึมการประมวลผล ฉันพบอัลกอริธึม SAGA Triangulation ซึ่งทำงานได้ดี แต่ช้ากว่า 5-10 เท่าและความเร็วมีความสำคัญในกรณีของฉัน ความคิดวิธีการดำเนินการใด ๆ

1
นำเข้าโมดูล GRASS และ SAGA ไปยังสคริปต์ python
ฉันใหม่ที่นี้ ฉันเป็น "สร้าง" ปลั๊กอินหลามสำหรับ qgis และฉันต้องการนำเข้าโมดูลจาก GRASS และ SAGA แต่ฉันไม่เข้าใจวิธีการทำ ปลั๊กอินที่ฉันต้องการนำเข้าคือ Kriging interpolation จาก SAGA หรือ v.surf.idw จาก GRASS หรือปลั๊กอินการแก้ไขจาก Raster qgis ฉันต้องการวิธีการแก้ไขเพื่อแปลงคะแนนในตาราง คุณสามารถช่วยฉันได้ไหม? ฉันมีข้อสงสัยอีก ฉันเรียกใช้บรรทัดเหล่านี้ในรหัสของฉัน: vectorlayer_vector = ftools_utils.getVectorLayerByName(inputLayer) Elevation = self.lineAttrib.currentText() cellSize = int(self.linePix.value()) outPath = self.inputLayerCombo3.text() output = ftools_utils.getRasterLayerByName(outPath) Processing.runAlgorithm("saga:shapestogrid", vectorlayer_vector, Elevation, 0, 0, 4, None, cellSize, output) …

2
วิธีรับชื่อฟิลด์ใน pyqgis 2.0
ฉันกำลังพยายามเปลี่ยนปลั๊กอินจาก QGIS 1.8 เป็น 2.0 ในรุ่น 1.8 ฉันสร้างตารางชื่อเขตข้อมูลเช่นนี้: layer = vlayer provider = layer.dataProvider() feat = QGSFeatrue() allAttrs = provider.attributeIndexes() provider.select(allAttrs) fieldNames = [] while provider.nextFeature(feat) fields = layer.pendingFields() for (k, field) in fields.iteritems(): fieldNames.append(field.name()) ฉันลองสิ่งนี้สำหรับรุ่น 2.0 ด้วย layer = vlayer fieldNames = [] for feature in layer.getFeatures(): fields = …
13 python  pyqgis  qgis-2 

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# 


4
กำลังมองหาวิธีการแบบ pythonic ในการคำนวณความยาวของ WKT linestring
ผมก็ไม่พอใจมากกับการคำนวณความยาวของ LineStrings ใน WGS84 ในไมล์ มันทำให้ฉันสงสัยว่ามีวิธีที่สะดวกกว่าในการคำนวณความยาวของ WKT ที่เปล่งออกมาตาม SRID ที่กำหนดหรือไม่ ฉันมีสิ่งที่ชอบในใจ: srid="WGS84" line="LINESTRING(3.0 4.0, 3.1 4.1)" print length(line, srid) ฉันกำลังมองหาคำตอบที่ถูกต้องไม่ใช่การsin\cosประมาณ ความคิดใด ๆ
13 python  wkt  wgs84  srid  length 

2
จะปิดและเปิดใช้งานการวาดใน ArcMap โดยใช้ Python ได้อย่างไร?
สคริปต์ที่ฉันเขียน repositions สองเฟรมข้อมูลและตั้งค่าขอบเขตของพวกเขา เมื่อทำสิ่งนี้ระบบจะวาดมุมมองแอ็คทีฟทั้งหมด 4 ครั้งทำให้สคริปต์ทำงานช้าลงอย่างมาก การกด F9 หรือคลิกปุ่ม 'หยุดการวาดชั่วคราว' ก่อนที่จะเรียกใช้สคริปต์จะเป็นการปิดใช้งานการวาดและทำให้สคริปต์ทำงานเร็วขึ้นมาก แต่ฉันต้องการให้สคริปต์ทำสิ่งนี้โดยอัตโนมัติ ฉันต้องการปิดการใช้งานการวาด ArcMap 10 ที่จุดเริ่มต้นของสคริปต์และเปิดใช้งานในตอนท้าย ฉันจะทำสิ่งนี้ได้อย่างไร

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

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 

1
ทำไมลำดับการนำเข้ามีความสำคัญในสคริปต์ประมวลผล PyQGIS แบบสแตนด์อโลน
ฉันเจอปัญหาแปลก ๆ ในขณะที่เรียกใช้สคริปต์ประมวลผล PyQGIS แบบสแตนด์อโลน ลำดับการนำเข้าในสคริปต์มีผลต่อการดำเนินการตามปกติ คุณสามารถทำให้เกิดปัญหาได้อีกครั้งโดยเปิดคอนโซล Python และป้อนสคริปต์ต่อไปนี้ (ฉันใช้ GNU / Linux, QGIS 2.6.1, กำลังประมวลผลปลั๊กอิน v.2.2.0-2 และ Python 2.7.3): # Prepare the environment import sys from qgis.core import QgsApplication from PyQt4.QtGui import QApplication app = QApplication([]) QgsApplication.setPrefixPath("/usr", True) QgsApplication.initQgis() # Prepare processing framework sys.path.append('/home/YOUR_USER/.qgis2/python/plugins') from processing.core.Processing import Processing Processing.initialize() …

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