PSQLsql का उपयोग करते हुए SQL सर्वर में अंक सम्मिलित करना?


12

मैं एक अजगर सेवा के माध्यम से एक वेब सेवा (ट्विटर) से एक्स और वाई मान एकत्र कर रहा हूं। लंबे समय में, यह कई महीनों तक चलेगा और मैं लगभग 6 मिलियन पॉइंट मार्क पर रुकने का इरादा रखता हूं।

मूल कोर्डर्स im प्राप्त कर रहे हैं भौगोलिक WGS84, लेकिन मुझे इन्हें अनुमानित WGS वेब मर्केटर में बदलने की आवश्यकता होगी। बीमार बाद में इस तालिका को एक आर्कगिस सर्वर मैप सेवा में प्रकाशित कर रहे हैं और इसे कैशिंग कर रहे हैं।

यह बिना किसी समय सीमा के अजगर को सीखने के लिए एक व्यक्तिगत परियोजना है और सोच रहा था कि क्या यह केवल SQL सर्वर से देशी स्थानिक प्रकारों का उपयोग करने के लिए एक अच्छा विचार होगा ?

मेरी वर्तमान अप्रयुक्त योजना:

  • GEOMETRY फ़ील्ड सेटअप (और कुछ अन्य विशेषताओं) के साथ SSMS के साथ एक तालिका बनाएं
  • मेरी पाइथन लिपि में, WGS84 में वेब / WGS84 के लिए वेब कर्सर में lat / lons को बदलने के लिए arcpy या pyproj का उपयोग करें (या मैं इसे किसी तरह से बचा सकता हूं और SQL के साथ इसके सभी प्राप्य?)
  • INSERT रिकॉर्ड के लिए pymssql का उपयोग करें , और तालिका में GEOMETRY फ़ील्ड में अंक डालें।

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

मेरे पास आर्क़ी / आर्कएसडीई १०.१ तक पहुँच है, यदि आवश्यकता हो, लेकिन आर्कसेडी की आवश्यकता नहीं होने के उदाहरण के रूप में इसका उपयोग करने की उम्मीद कर रहा था।


पहले pyproj डेटा का उपयोग करें और फिर MS SQL डेटाबेस में डेटा डालें। ज्यामिति :: STPointFromText ('POINT (' + p.longitude + '' + p.latitude + ')', 4326) इसके लिए
WKT बनाएंगे

और यदि आप कर सकते हैं तो मैं PostGIS का उपयोग करूंगा
simplexio

धन्यवाद, लेकिन क्या आप इसे उत्तर में डाल सकते हैं और इस पर विस्तृत रूप से बता सकते हैं कि आप पोस्टजीआईएस के साथ-साथ pls का उपयोग क्यों करेंगे।
साइमन

जवाबों:


6

मैं अपनी योजना के साथ आगे बढ़ा, जैसा कि प्रश्न में कहा गया है।

SQL सर्वर में अंक डालने के उद्देश्य से, यह पोस्ट मेरे लिए बहुत उपयोगी थी।

यहाँ मेरे लिए क्या काम किया गया है:

import pymssql

# connect to SQL Server instance
conn = pymssql.connect(host='localhost', user='sa', password='sa', database='nosde')

# commits every transaction automatically and setup cursor
conn.autocommit(True)
cur = conn.cursor()

# !!Chunk of code stripped out on how I get my coords, unrelated to Q.

# Store projected coords in a GEOMETRY type field
geom_type = "geometry::STPointFromText('POINT(%s %s)', 3857)" % (x, y)
    try:
        cur.execute("INSERT INTO tweets (geom) VALUES (%s)" % (geom_type))
    except TypeError:
        print "Could not INSERT", clean

    conn.close()

आपने अपने निर्देशांक को भौगोलिक WGS84 से वेब मर्केटर में बदलने का प्रबंधन कैसे किया? इसके बाद के संस्करण में ऐसा लगता है जैसे आपने ऐसा किया है
पीटर हॉर्सबेल मोलर

1
pyproj पुस्तकालय को देखो। एक इलाज काम करता है! एक और प्रश्न पूछें यदि आप विशिष्टता चाहते हैं।
सिमोन

2

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


संभावित समाधान। हालांकि, मैं सोच रहा था कि अगर मैं 6M अंक एकत्र कर रहा हूं, तो अंत में इस उपकरण को चलाने में कुछ समय लग सकता है। मान रहा था कि मैं इसे मक्खी पर कर सकता हूं, इस तरह से मैं वास्तव में अंक देख सकता हूं जबकि स्क्रिप्ट अभी भी एकत्र कर रहा है।
शमौन

1

मुझे लगता है कि आपके पास एक या कई बड़ी फाइलें हैं जो xy और कुछ अन्य डेटा से भरी हैं। सबसे पहले, मेरे ज्ञान चिकित्सा में एमएस एसक्यूएल (2008 आर 2 या बाद के) में कोई प्रक्षेपण समर्थन नहीं है। थर्ड पार्टी सॉल्यूशंस और प्रोज.नेट लाइब्रेरी है जिसे आप एक बनाने के लिए उपयोग कर सकते हैं। इसलिए मुझे डेटाबेस में डेटा स्टोर करते समय दो विकल्प दिखाई देते हैं, यदि MS SQL का उपयोग कर रहे हैं, तो आपको डेटाबेस डालने से पहले वांछित प्रक्षेपण में डेटा को फिर से अस्वीकृत करना होगा या आप डेटा को PostGIS db में डंप करें और वहां रूपांतरण करें। MSG की तुलना में PostGIS के डेटाबेस में ज्यादा बेहतर टूलसेट है


0

geoAlchemy को GeometryColumns का उपयोग करके कार्य करना चाहिए। हालाँकि, मैं एट्रीब्यूट के कारण विंडोज / पाइथन 2.7 / sqlalchemy 0.9.6 पर काम करने में सक्षम नहीं था। टाइप: ऑब्जेक्ट 'ColumnProperty' में कोई विशेषता नहीं है 'ColumnComparator'

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