QGIS का उपयोग करके एक लाख से अधिक अंक का मानचित्रण


9

मैं एक मेटाडाटा के साथ अमेरिका में एक लाख से अधिक लैट / लोन अंकों के साथ सीएसवी का नक्शा बनाने की कोशिश कर रहा हूं। मैंने कभी भी इस डेटा को मैप करने की कोशिश नहीं की है और जानना चाहता हूं कि मुझे क्या कदम उठाने चाहिए। मुझे पता है कि यह क्यूजीआईएस के लिए बहुत अधिक डेटा है इसलिए मैंने इसे 100,000 लाइन सीएसवी में विभाजित करने की कोशिश की, लेकिन फिर बहुत सारी फाइलें मिलीं, जो मुझे नहीं पता था कि क्या करना है। मुझे लगता है कि जनगणना ब्लॉक द्वारा अंक एकत्र करना सबसे अच्छा हो सकता है, लेकिन ऐसा करने का सबसे अच्छा तरीका नहीं पता है कि जावास्क्रिप्ट (मैंने पायथन का उपयोग कभी नहीं किया है) या कमांड लाइन टूल? कोई सुझाव?


2
PostGIS का उपयोग करके आप आसानी से CSV को डेटाबेस में लोड कर सकते हैं, फिर lat / lon कॉलम को ज्यामिति में बदल सकते हैं और आपका काम हो जाएगा! तब आप उस सभी जनगणना / सारांश को कर सकते हैं जिसे आप PostGIS में चाहते हैं ... आप टर्फ के साथ क्या करना चाहते हैं?
DPSSpatial

2
नमस्ते, जीआईएस स्टैकएक्सचेंज में आपका स्वागत है। मेरा सुझाव है कि आप PostgreSQL / PostGIS पर एक नज़र डालें, एक स्थानिक रूप से सक्षम डेटाबेस इंजन है जो GGIS के साथ अच्छी तरह से इंटरफेस करता है। एक बार जब आपका डेटा एक डेटाबेस में लोड हो जाता है, तो यह शामिल होने और उदाहरण के लिए, जनगणना ट्रैक्स या उस पर क्लस्टरिंग करने के लिए अपेक्षाकृत तुच्छ हो जाएगा।
राफेल

मुझे लगता है कि राफेल की टिप्पणी अब तक का सबसे अच्छा 'जवाब' है। 1 मिलियन अंक एक बार पोस्टगिस में लोड किए जाने के साथ काम करने के लिए तुच्छ हैं और क्यूजीआईएस-पोस्टजीआईएस इंटरफ़ेस टूल बहुत अच्छे हैं।
अलेक्जेंडर

साभार @mapBaker और @raphael! मैं उस तरह Postgis का उपयोग करने के बारे में नहीं सोचा था। मैंने QGUS में CSV आयात किया। वहाँ वैसे भी है कि PostGIS में परिवर्तित करने के लिए?
user63623

जब आप 1 मिलियन रिकॉर्ड्स हैं, तो क्या आप XG, Y को ज्यामिति में बदलने का अच्छा तरीका जानते हैं? मैंने इसे ST_MakePoint पद्धति का उपयोग करके दोहराने की कोशिश की है, लेकिन मेमोरी में बमबारी हुई है - क्या ST_GeomFromText मौजूदा X और Y कॉलम का उपयोग कर सकता है?
DPSSpatial

जवाबों:


9

मैं PostgreSQL / PostGIS का उपयोग करने की सलाह दूंगा, क्योंकि यह मूल रूप से QGIS द्वारा समर्थित है, इसमें कुछ स्थानिक डेटा (जैसे कि जनगणना ट्रैक्स) के साथ जुड़ने के लिए अंतर्निहित कार्य हैं, और एक डेटाबेस का उपयोग बड़े डेटासेट के साथ मेमोरी को सीमित करना चाहिए। मेरे सुझाए गए चरणों का सेट नीचे है। SQL कमांड को निष्पादित करने के लिए आप या तो PGAdmin या QGIS का उपयोग कर सकते हैं , पूर्व आपको प्रश्नों पर अधिक सूचनात्मक त्रुटियां देगा, बाद वाला आपको प्रश्नों के परिणामों को मानचित्र पर परतों के रूप में लोड करने देगा। बाद में जाने के लिए Database > DB Manager > DB Managerऔर दूसरे बटन पर क्लिक करें।

  1. पोस्टजीआईएस स्थापित करना शुरू करें , त्वरित इंस्टॉलर भी
  2. QGIS SQL विंडो में या PGAdmin की SQL विंडो में CREATE TABLEकमांड ( उदाहरण ) का उपयोग करके अपने डेटाबेस में एक तालिका बनाएं
  3. PGAdmin में अपनी टेबल पर राइट-क्लिक करके और इस पर क्लिक करके इंप्लीमेंट फंक्शन में निर्मित COPY sql कमांड या PGAdmin के साथ अपने csv को आयात करें Import...(यह बाद में नाजुक हो सकता है इसलिए मैं बड़े डेटासेट के लिए COPY की सिफारिश करूंगा)।
  4. PGAdmin या QGIS SQL विंडो में निम्न SQL निष्पादित करके अपनी तालिका में एक ज्यामिति स्तंभ जोड़ें।

    ALTER TABLE some_table ADD COLUMN geom geometry(Point,4326);
    
  5. कुछ का उपयोग करके बिंदु ज्यामिति बनाएं

    UPDATE yourtable SET geom = ST_SetSRID(ST_MakePoint( x, y), 4326);
    
  6. SELECTकुछ के साथ एक बयान का उपयोग करके डेटा का सबसेट प्रदर्शित करेंLIMIT 50000

  7. या जैसे कुछ के साथ जनगणना डेटा में शामिल हों

    चयन करें c.gid, c.geom
    से जनगणना c
    INNER JOIN yourdata ON ST_Within (yourdata.geom, c.geom)

संदर्भ संदर्भ:
ST_Within
ST_MakePoint
ST_SetSRID


उत्तर के लिए धन्यवाद। मैंने चरण 3 की कोशिश की, लेकिन मैं QGIS में तालिका संपादित नहीं कर सका। क्या प्लगइन का उपयोग किए बिना एक कॉलम जोड़ने का एक और तरीका है?
user63623

@ user63623 मैंने एक अतिरिक्त कदम को शामिल करने के लिए अपने उत्तर को अपडेट किया जिसमें आपकी समस्या का समाधान होना चाहिए।
राफेल

धन्यवाद मुझे लगता है कि 1 और 2 के बीच एक चरण गायब है। जब आप QGIS में csv लेयर आयात करते हैं तो आपको डेटाबेस बनाने के लिए इसे shp फाइल के रूप में सहेजना पड़ता है। सही? हालांकि जब मैं कोशिश करता हूं कि यह जम जाता है। मैंने PGAdmin का उपयोग करने की भी कोशिश की, लेकिन मुझे आयात फ़ंक्शन नहीं मिला।
user63623

PGAdmin में आपको सबसे पहले अपनी तालिका को बनाना होगा, इस तरह से एक sql क्वेरी का उपयोग करके: stackoverflow.com/questions/9826833/create-table-in-postgresql , csv से आपके सभी कॉलम ठीक से परिभाषित किए गए हैं। तब आप Import...आयात विज़ार्ड का उपयोग करने के लिए टैबलेन पर> राइट-क्लिक कर सकते हैं , या एक COPY कमांड postgresql.org/docs/current/static/sql-copy.html का उपयोग कर सकते हैं। मैं जवाब अपडेट करूंगा
राफेल

3

मैंने हाल ही में CSV से आयातित 1.4 मिलियन अंकों के डेटासेट के साथ काम किया। मैंने csv में किसी भी अप्रासंगिक क्षेत्र को हटाना सुनिश्चित किया। मेरे लिए यह ठीक काम किया, भले ही कुछ प्रक्रियाओं को निष्पादित करने में थोड़ा समय लगा। (QGIS 2.12, 64 बिट विंडोज 7, 8 जीबी रैम)


2

एक आर उम्मीदवार fwiw, pseudocode में:

library(rgdal) ## for spatial export
library(readr) ## for fast file read

x <- read_csv("file.csv") 
names(x)  ## some as yet unknown columns

coordinates(x) <- c("x", "y")  ## your coordinate names may be different

writeOGR(x, ".", layer = "filepoints", driver = "MapInfo File")

यह आपको फ़ाइल निर्देशिका प्रदान करेगा। कार्यशील निर्देशिका में आप QGIS के साथ पढ़ सकते हैं। या एक filepoint.shp बनाने के लिए "ESRI शेपफाइल" चुनें, या जो भी स्वरूप आपको चाहिए। QGIS GDAL का उपयोग करता है जैसे कि rgdal करता है, इसलिए इसमें बहुत ओवरलैप है। अनुरूप पायथन तंत्र हैं।

चूंकि आपके पास कोई मेटाडेटा नहीं है, आप proj4string (x) <- CRS ("+ proj = something + etc") को सेट करने के लिए निर्देशांक (x) निर्दिष्ट करने के बाद सेट कर सकते हैं, लेकिन हम केवल आपके डेटा का अनुमान लगा सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.