ArcSDE से PostGIS तक डेटा स्थानांतरित करना?


19

इसका सुझाव दिया गया है कि मैं इस प्रश्न को फिर से पूछता हूं, लेकिन शायद अलग-अलग शब्दों में कहा गया है कि कैसे पोस्टगिस में कई शेपफाइल्स को लोड करना है

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

मैं रात में एसएचएसडी में आर्कएसडीई डेटा निर्यात करने के लिए एक पायथन स्क्रिप्ट का उत्पादन कर सकता हूं, लेकिन मुझे यकीन नहीं है कि तब कैसे निर्यात किए गए एसएचपी फाइलों को पोस्टजीआईएस में अपलोड करें, उन लोगों को अधिलेखित करें जो पहले से ही एक स्वचालित कार्य (बैच फ़ाइल) के रूप में पोस्टगिस में मौजूद थे। )।

मेरी भव्य योजना आर्कजीडीई / आर्कजीआईएस को पोस्टजीस, क्यूजीआईएस और जियोसर्वर या मैपस्वर के साथ बदलने की है।


1
क्या ArcSDE RDBMS डेटास्टोर का प्रबंधन नहीं करता है? अब आपका डेटा क्या है?
शॉन

1
ArcSDE का आप किस संस्करण का उपयोग कर रहे हैं? - ArcSDE 10 पोस्टग्रेज को लिख सकते हैं। resources.arcgis.com/content/arcsde/10.0/...
Mapperz

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

शायद सिंक्रनाइज़ेशन प्रश्न शीर्षक का एक खराब चुना गया था। दरअसल, मैं इसे SDE से PostGIS तक डेटासेट को ले जाने और बनाए रखने की एक अल्पावधि विधि के रूप में चाहता हूं। मेरे SDE में लगभग 600 डेटासेट हैं और मैं डेटा को मैन्युअल रूप से मिर्ग्रेट नहीं करना चाहता। मेड (श्री)।
geosmiles

जवाबों:


19

DB -> फ़ाइल -> DB रूपांतरण करने के बजाय, जहां Esri Shapefiles बिचौलिया फ़ाइल-आधारित घटक हैं, यह अधिक प्रत्यक्ष DB -> DB हस्तांतरण की जांच करने योग्य हो सकता है। वहाँ कुछ उपकरण हैं जो ऐसा कर सकते हैं, लेकिन मैं केवल खुले स्रोत GDAL / OGR टूल पर ध्यान केंद्रित कर रहा हूं ।

आप यह मानते हुए एक विंडोज सर्वर है, तो आप आसानी से उपयोग कर रहा GDAL / OGR स्थापित कर सकते हैं OSGeo4W । उन्नत इंस्टॉल मोड के साथ, आपके पास कस्टम पैकेज कॉन्फ़िगरेशन का चयन करने की क्षमता है, जैसे कि एसडीई चालक ( यह सुनिश्चित करने के लिए कि आपके एसडीई संस्करण के लिए एक उपयुक्त मैच है - संकुल की यह सूची देखें - केवल एसडीई संस्करण 9.0 से 9.2 समर्थित हैं)। ये पैकेज केवल हेडर और रैपर हैं, और आपको एसडीई लाइब्रेरी स्थापित करने की आवश्यकता है, जो आपके पास सीडी / डीवीडी रोम पर होनी चाहिए, और यह सुनिश्चित करने के लिए पाट चर को उचित रूप से GDAL / OGR के लिए निर्धारित करना चाहिए। एक सफल स्थापित "SDE" को OSGeo4W शेल में निम्नलिखित कमांड के साथ कहीं दिखाई देगा:ogr2ogr --formats

GDAL / OGR को कॉन्फ़िगर करने के बाद, आप कुछ टूल का उपयोग कर सकते हैं:

  • OSGeo4W शेल से कमांड-लाइन टूल ogr2ogr , जिसे कमांड की आवश्यकता होगी जैसे: ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version](आप विभिन्न -append, -overwriteया -updateविकल्पों का भी पता लगा सकते हैं)
  • एक मौजूदा पायथन स्क्रिप्ट को कॉपी करें और संशोधित करें जो एसडीई से जुड़ता है, और आप इसे डेटा को किसी अन्य डेटा स्रोत में स्थानांतरित करने के लिए संशोधित कर सकते हैं।

इस विधि के लिए प्रमुख चेतावनी यह है कि यह सेटअप के लिए जटिल है।


बहुत स्पष्ट और उपयोगी प्रतिक्रिया के लिए +1। यहां तक ​​कि जटिल होने के नाते, यह एक सीधा रास्ता है।
DEWright

सिद्धांत रूप में मुझे एक प्रत्यक्ष DB हस्तांतरण करने का विचार पसंद है, लेकिन मुझे कुछ 'बिली बेसिक' की तलाश है। हालांकि, हम मो पर SDE 9.3.1 हैं, इसलिए उपरोक्त उत्तर एक go'a नहीं है। जैसा कि मैं PostGIS और SQL के लिए नया हूँ, लेकिन मुझे लगता है कि वहाँ एक स्क्रिप्ट 'वहाँ बाहर' जहाँ आप एक थोक अपलोड को स्वचालित कर सकता था!
geosmiles

1
एसडीई के सभी संस्करणों के लिए अन्य "DB-> DB" विकल्प (और सैकड़ों अन्य प्रारूप / DBs) FME है । एफएमई गैर-मुक्त है (एक नि: शुल्क परीक्षण है जिसे आप बाहर परीक्षण कर सकते हैं), जिसका अर्थ है कि वे आपके सिंक्रनाइज़ेशन समाधान की सहायता के लिए समर्थन प्रदान कर सकते हैं। लेकिन यह स्पष्ट रूप से एक बजट की आवश्यकता है। सबसे अच्छा मुक्त विकल्प दर्जी के साथ एक अच्छा बैट स्क्रिप्ट है shp2pgsql, psqlआदि
माइक टी

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

जहां आपको "एसडीई" ड्राइवर मिलता है, तो आप उस मौजूदा पायथन स्क्रिप्ट का उपयोग कर सकते हैं? मैं नहीं ढूँढ सकता ...
ePascoal

6

PostGIS नाम के एक लोडर है shp2pgsql है कि आप एक PostGIS डेटाबेस में शेपफ़ाइलें लोड करने के लिए उपयोग कर सकते हैं। इसका एक विकल्प ("-d") डेटा लोड करने से पहले मौजूदा डेटाबेस तालिका को गिरा देता है। बैच फ़ाइल या स्क्रिप्ट बनाना बहुत आसान होना चाहिए जो सभी शेपफाइल्स के माध्यम से लूप कर सके और उन्हें आपके लिए लोड कर सके।

यदि आप इसके बारे में कट्टरता प्राप्त करना चाहते थे, तो आप GDAL को स्थापित कर सकते थे, और OGR टूल (जिसमें आर्कसेड कनेक्टर हो) का उपयोग कर सकते हैं और शेपफाइल एक्सपोर्ट को छोड़ सकते हैं। आर्कएसडीई कनेक्टर पर जानकारी यहां पाई जा सकती है


बिली मूल शब्दों में, एक एक्ससिटिंग टेबल को छोड़ने के लिए मैं एक स्क्रिप्ट (विंडोज़ शेड्यूल किए गए कार्य के रूप में कैसे जोड़ा जा सकता हूं) लिखूंगा, इसकी सूची Listed_Buildings कहती है और फिर इसका एक नया संस्करण अपलोड करता है जिसे D: \ sde_export।
geosmiles

1
जब क्षेत्र का नाम 11 वर्णों से अधिक होता है, तब से विषम आकार खराब होता है क्योंकि अन्य 11 वर्ण हटा दिए जाएंगे !!
SIslam

1

मुझे पता है कि मुझे पार्टी में देर हो रही है लेकिन इसके लिए एक और विकल्प है जो 2 डेटाबेस से बचता है।

आप Postgresql + Postgis के शीर्ष पर ArcSDE रख सकते हैं। यह आपका स्वामी और केवल db होगा।

ArcSDE को पोस्टगिस ज्यामिति का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है और st_geometries (ESRI मालिकाना) नहीं।

इसका मतलब यह है कि आप आर्कजीडी लोड / संपादित स्थानिक तालिकाओं को सीधे उपयोग करने के लिए किसी भी पोस्टगिस टूल का उपयोग कर सकते हैं, क्योंकि वे वास्तव में पोस्टगिस देशी टेबल हैं।

उदाहरण के लिए, आप सीधे पोस्टगिस डेटाबेस से कनेक्ट करने के लिए qgis का उपयोग कर सकते हैं और आर्कसीड के माध्यम से आर्कगिस के समान डेटा पढ़ सकते हैं।


1

एक अन्य दृष्टिकोण गीकोलेट (खुले स्रोत) की तरह एक स्थानिक ईटीएल का उपयोग करना होगा।

http://www.spatialytics.org/projects/geokettle/

मैं हर समय sql सर्वर और PostGIS के बीच डेटा स्थानांतरित करने के लिए जियोकेट का उपयोग करता हूं। हालाँकि, जब यह PostGIS के साथ अच्छी तरह से काम करता है तो SQL सर्वर के स्थानिक डेटा प्रकार (नीचे संकेत देखें) के साथ काम करते समय चुनौतियाँ होती हैं। इसके अलावा, यह मानता है कि आप SQL सर्वर देशी स्थानिक डेटा प्रकार के रूप में SDE geometries संग्रहीत कर रहे हैं। जब आप ArcCatalog के माध्यम से डेटा लोड कर रहे हैं, तो आप ज्यामिति कीवर्ड के साथ ऐसा कर सकते हैं।

संकेत 1: जब FROM sql सर्वर डेटा का चयन करते हैं तो .STAsText () से ज्योमेट्री फील्ड या Geokettle sql सर्वर डेटा टाइप पर चोक हो जाएगा।

संकेत 2: डेटा इंटो एसक्यूएल सर्वर को सम्मिलित करते समय आपको ज्यामिति को पाठ क्षेत्र में पाठ के रूप में सम्मिलित करना होगा। फिर एक नया ज्यामिति स्तंभ जोड़ने के लिए एसक्यूएल कदम का उपयोग करें (यदि आवश्यक हो) और इसे पाठ ज्यामिति से आबाद करें। इस तरह आप एक ज्यामिति के OGC मानक पाठ प्रतिनिधित्व से ज्यामिति के निर्माण के लिए SQL सर्वर का उपयोग करते हैं।

संकेत 3: एसडीई के साथ अपनी नई स्थानिक तालिका को पंजीकृत करना सुनिश्चित करें।


SDE.ST_AsText () का उपयोग करने के लिए आपको SDE.ST_GEOMETRY_SHAPELIB_PKG की आवश्यकता होगी, क्या मैं सही हूं?
ePascoal

0

मूल 9.3 db पर डेटाबेस प्रतिकृति स्थापित करने पर विचार करें।
यह नए 10 के रूप में अच्छी तरह से काम नहीं करता है लेकिन ...
पोस्टग्रेजिक डेटा टाइप pg_geometry का उपयोग करके पोस्टग्रेजेक में एक और एसडी को दोहराएं।

यहाँ कुछ esri help
NOTE है: यदि दोनों dbs एक ही मशीन पर नहीं हैं तो इसके लिए डुप्लिकेट लाइसेंस की आवश्यकता होगी


लगता है कि डुप्लिकेट लाइसेंस पाने के लिए खुले स्रोत से छेड़छाड़ करने की बात पराजित हो रही है!
जियोस्माइल्स

यदि आपका मूल db postgresql में था, तो आप इसे एक ही db (मल्टी-शेड इंस्टेंस) में कर सकते थे। या अपने sde के रूप में एक ही मशीन पर postgresql स्थापित करें। यदि आप इसे विकास नहीं मानते हैं और अंतरिम ~ 2.5k yr के लिए EDN (एक और sde) खरीद सकते हैं।
ब्रैड नेसोम

0

आप ArcObjects लिख सकते हैं:

ए) अपने आर्क्सडे डेटाबेस को डंप करें; बी) सादे c # कोड shp2pgsql sqls उत्पन्न करने के लिए; सी) प्लेन सी # पुराने तालिकाओं को डंप करने के लिए कोड; घ) अपने पोस्टग्रैक्स्ल में सभी shp2pgsql निष्पादित करने के लिए सादे c #;

आप इसे प्राप्त करने के लिए npgsql ड्राइवर का उपयोग कर सकते हैं, कार्यों को निष्पादित कर सकते हैं और अपने पोस्टगिस डेटाबेस में सीधे एसक्यूएल स्टेटमेंट कर सकते हैं;


0

आपका आर्कसेडी ज्यामिति ( संबंधपरक डेटाबेस में जियोडेटाबेस स्टोरेज ) क्या है? ऐसे परिदृश्य में, आप ST_Geometry प्रकार का उपयोग करने पर विचार कर सकते हैं और उसके बाद PostGre / PostGIS प्रतिकृति ( PostGIS प्रतिकृति @ FOSS4G ) उपकरण का उपयोग कर सकते हैं। इस योजना में एडिशन (संस्करण डेटाबेस) के लिए आर्कएसडीई / आर्कजीआईएस / जियोडैटबेस फीचर्स और डिफ्यूजन (प्रतिकृति प्रसार डेटाबेस) के लिए ओपन-सोर्स टूल का उपयोग करने का लाभ हो सकता है।

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