पाइथन का उपयोग करके शेपफाइल का सरल विषयगत मानचित्रण?


37

मैं आर्कगिस / आर्कपी का उपयोग किए बिना, पायथन में भौगोलिक डेटा की कल्पना करना चाहता हूं, और एक नक्शा बनाना चाहता हूं।

इंटरनेट पर मैंने पाया कि पायथन का उपयोग करके एक विषयगत नक्शा कैसे बनाया जाता है :

यहाँ कुछ कोड है जो मैंने कोशिश की है:

import shpUtils
import matplotlib.pyplot as plt

shpRecords = shpUtils.loadShapefile('C:\\Users\\shapefile.shp')

for i in range(0,len(shpRecords)):
    x = []
    y = []
    for j in range(0,len(shpRecords[i]['shp_data']['parts'][0]['points'])):

    tempx = float(shpRecords[i]['shp_data']['parts'][0]['points'][j]['x'])
    tempy = float(shpRecords[i]['shp_data']['parts'][0]['points'][j]['y'])
    x.append(tempx)
    y.append(tempy)
    plt.fill(x,y)

plt.axis('equal')
plt.title("Testing")
plt.show()

हालांकि, जब मैं इसे चलाता हूं, तो यह मुझे यादृच्छिक रंग देता है।

अगर मैं अपने आकार के एक निश्चित कॉलम की कल्पना करना चाहता हूं, तो मैं समान कोड का उपयोग करके इसे कैसे लागू कर सकता हूं?

यह ऊपर दिए गए लिंक में बहुत अस्पष्ट है जहां वह केवल रंगों के उपयोग पर चर्चा करता है ...

क्या मुझे शायद इसे पूरा करने के लिए अतिरिक्त मॉड्यूल की आवश्यकता होगी, जैसे कि डेसकार्टेस और पायसाल ?

जवाबों:


61

मैं आर्कपी को नहीं जानता, लेकिन मैं सालों तक पाइथन में शेपफाइल्स और रैस्टर के साथ काम करता हूं

  1. पायथन में शेपफाइल्स के प्रसंस्करण के लिए, ओसेगो / ओगर , फियोना , पीसल या पीशप ( shpUtils उनमें से एक है और सबसे ज्यादा इस्तेमाल नहीं किया जाता है) जैसे कई मॉड्यूल हैं , और अन्य, पीआईआई देखें : जीआईएस और जीस.स्टैकएक्सचेंज पर उदाहरण और कई उदाहरण। वेब (न केवल अंग्रेजी में)। उनमें से अधिकांश आर्कपी (या आर्कगिसस्क्रिप्टिंग) की तुलना में बहुत पुराने हैं ...
  2. रेखापुंज प्रसंस्करण के लिए आप ओस्गो / गदल का उपयोग कर सकते हैं , मानक
  3. भू-स्थानिक ज्यामिति प्रसंस्करण के लिए, वहाँ है सुडौल
  4. ज्यामिति की साजिश रचने के लिए आप उपयोग कर सकते हैं matplotlib और संभवतः डेसकार्टेस , क्षेत्रों के लिए matplotlib के "विस्तार", लेकिन यह भी कई, कई अन्य मॉड्यूल, देख प्लॉटिंग: Pypi की तरह और मॉड्यूल मायावी (भी matplotlib) 3 डी प्रतिनिधित्व के लिए
  5. मेपनिक जैसे मॉड्यूल भी हैं जो आपको सीधे 1 की संभावनाएं देते हैं) एक आकृतिफाइल पढ़ते हैं और 4) मॉड्यूल पायकोरो के साथ साजिश रचते हैं

उसके बाद, यह जीआईएस की तरह है:

  • आप मॉड्यूल 1) को खोलने के लिए, शेपफाइल्स को बचाने के लिए और अन्य मॉड्यूल जैसे सुन्न या स्केपी के साथ उपचार करना चाहते हैं, अगर आप चाहें तो उपयोग करें।
  • आप ज्यामितीय वस्तुओं (बफर, आदि) के हेरफेर और विश्लेषण के लिए सुडौल रूप से उपयोग कर सकते हैं।
  • आप ज्यामिति को प्लॉट करने के लिए matplotlib का उपयोग कर सकते हैं, लेकिन matplotlib को नहीं पता कि आप क्या प्लॉट करना चाहते हैं। प्लॉट (विशेषताएँ, आदि), और कैसे निर्दिष्ट करने के लिए मॉड्यूल 1) या 3) के साथ यह आपका काम है।

अगर मैं अपने आकार के एक निश्चित कॉलम की कल्पना करना चाहता हूं, तो मैं इसे कोड में कैसे लागू कर सकता हूं?

तो, आप matplotib और अन्य मॉड्यूल सीखना चाहिए। आपको आर्कपी सीखना है, यह वही है ... (वेब ​​पर बहुत सारे उत्कृष्ट ट्यूटोरियल हैं, विशेष रूप से मैटपॉलिब के लिए, और यह आसान है कि आर्कपी क्योंकि यह शुद्ध पायथन है)।

केवल पायथन के साथ कुछ उदाहरण

यहाँ छवि विवरण दर्ज करें

एक विशेषता के आधार पर रंगों के साथ भूवैज्ञानिक नक्शा (बहुभुज आकार का)

यहाँ छवि विवरण दर्ज करें

एक विशेषता के आधार पर रंग के साथ 3 डी पॉइंट (पॉइंटज़ शेपफाइल)

यहाँ छवि विवरण दर्ज करें

एक डीईएम पर 3 डी पॉइंट्स (पॉइंट शेपफाइल विद जेड विथ एट्रीब्यूट्री) और 3 डी लाइन (पॉलीलाइन शेपफाइल), और डीईएम सतह पर लिपटा एक रिस्टर पर।

यहाँ छवि विवरण दर्ज करें

मूल आकृति आकृति (बहुवचन) की विशेषताओं (भूवैज्ञानिक संरचनाओं = क्रॉस सेक्शन) के आधार पर z मान और रंगों के साथ स्थलाकृतिक प्रोफ़ाइल

यहाँ छवि विवरण दर्ज करें

DEM (GeoTIFF) मॉड्यूल मायावी 2 के साथ

यहाँ छवि विवरण दर्ज करें

DEM (ESRI ascii grid, .asc) और पॉइंट शेपफाइल्स (z के साथ विशेषता के रूप में) मॉड्यूल विज़्विस के साथ

यहाँ छवि विवरण दर्ज करें

बोरहोल (एक विशेषता (भूवैज्ञानिक संरचनाओं) के आधार पर रंगों के साथ एक पॉलीलाइन का 3 डी बफर, एक ग्रिड सतह के साथ एक बिंदु आकार आकृति से मॉड्यूल खस्ता और matplotlib के साथ गणना की जाती है (एक विशेषता के रूप में z के साथ), मॉड्यूल विज़्विस के साथ दृश्यमान


16

मुझे इसी तरह की समस्याएं हैं जहां मैं जल्दी से आकार-प्रकार की कल्पना करना चाहता हूं, और मैंने हमेशा ऐसे छोटे काम को पूरा करने के लिए मैटलपोटलिब रास्ता काफी लंबा रास्ता तय किया है। इसके बजाय मैंने शॉर्ट के लिए "पायथन ज्योग्राफिक विज़ुअलाइज़र" मॉड्यूल या जियोविस को विकसित किया। अपडेट: v0.2.0 अब बहुत सी नई कार्यक्षमता के साथ बाहर है।

इसके साथ शेपफाइल्स को देखना आसान नहीं हो सकता है:

import geovis
geovis.ViewShapefile("C:/yourshapefile.shp")

Voila, आप एक Tkinter विंडो में एक छवि के रूप में पॉप अप करते हैं और आप मैप को एक छवि फ़ाइल में भी सहेज सकते हैं। स्टाइलिंग, कलरिंग और मैप में कई लेयर्स को जोड़ना भी संभव है, और नवीनतम संस्करण में आप विशेषताओं के आधार पर वर्गीकृत कर सकते हैं और किसी विशेष क्षेत्र में ज़ूम कर सकते हैं । लगभग 5 मिनट में दुनिया के सभी जीएडीएम प्रांतों को लोड और स्पष्ट रूप से रंगीन जियोविज़ के नीचे के नक्शे में। आप यहाँ से जियोवीस डाउनलोड कर सकते हैं , जहाँ आप इसका उपयोग कैसे करें, इसके बारे में भी पढ़ सकते हैं।

यहाँ छवि विवरण दर्ज करें

इसका उद्देश्य आसान इंस्टालेशन के रूप में है, क्योंकि जियोवीस का उपयोग कोई भी व्यक्ति कर सकता है, जिसके पास पाइथन है और उसे किसी अन्य मॉड्यूल की आवश्यकता नहीं है क्योंकि यह रेंडर के रूप में बिलिन टिंकर कैनवस का उपयोग कर सकता है। लेकिन यह अत्यधिक अनुशंसा की जाती है कि आपके पास या तो एगड्रॉप, पीआईएल, या पाइकैरो है, जिसे रेंडरर्स के रूप में भी इस्तेमाल किया जा सकता है और यह बहुत तेज़ और उच्च गुणवत्ता वाला है।

पीछे हटना आपके शेपफाइल को अव्यवस्थित / लंबे समन्वय प्रणाली के साथ असुरक्षित होना है - यह अभी तक अनुमानों या परिवर्तनों को नहीं संभालता है।


14

मुझे इस विषय से संबंधित कई ट्यूटोरियल मिले, जिन्हें मैं साझा करना चाहता था:

आप R का उपयोग करने पर भी विचार कर सकते हैं: R में एक आकर्षक कोरोप्लेथ मानचित्र कैसे बनाएं?


1

2019 में अजगर में एक आकृति से एक विषयगत नक्शा बनाने का सबसे सरल तरीका, जियोपैन्डस है

प्रलेखन से एक उदाहरण: http://geopandas.org/mapping.html

import geopandas
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world['gdp_per_cap'] = world.gdp_md_est / world.pop_est
world.plot(column='gdp_per_cap')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.