বৈশিষ্ট্য এবং জ্যামিতি সহ শেফফিলকে সিএসভিতে রূপান্তর করবেন?


21

আমার কাছে k০ কে + এন্ট্রি সহ একটি শেফফাইল রয়েছে, এগুলির সবগুলিই একই বৈশিষ্ট্যযুক্ত (বহুগুণে জমির মালিক, জমির মালিকের নাম, করের আইডি # ইত্যাদি) সহ বহুভুজ। আমার শেষ পর্যন্ত যা দরকার তা হ'ল এই সমস্ত বৈশিষ্ট্য এবং তাদের সম্পর্কিত জ্যামিতি (কেএমএল সামঞ্জস্যপূর্ণ xyz ফর্ম্যাটে, এটি ডাব্লুকেটি ফর্ম্যাট নয়) সহ একটি সিএসভি ফাইল।

আমি জানি যে আমি এক্সলে .dbf ফাইলটি খুলতে এবং বৈশিষ্ট্যগুলি পেতে পারি। আমি আরও জানি যে আমি কিউজিআইএসে শেফফাইলটি খুলতে এবং এক্সেলটিতে ডেটা অনুলিপি করতে পারি, যা আমার বৈশিষ্ট্য এবং ডব্লিউকেটি জ্যামিতি পায়।

বৈশিষ্ট্য এবং গুগল আর্থ বন্ধুত্বপূর্ণ জ্যামিতির সাথে শেফফিলকে সিএসভিতে (এক্সেল খোলার যোগ্য) রূপান্তর করার কোনও সহজ উপায় আছে কি?


আপনার নির্দিষ্টকরণগুলি পূরণ করতে, একটি অ্যাপ্লিকেশন বা একটি স্ক্রিপ্ট তৈরি করতে হবে। আমি মনে করি এটি কঠিন নয়, তবে আমি মনে করি না এটি অযৌক্তিকও নয়। যদি আমি এটি করার কাজটি করি তবে আমি সম্ভবত এই জাতীয় কাজের জন্য 1 সপ্তাহের ফুলটাইম অনুমান করব।
স্টিফান কোয়ান

3
ধন্যবাদ, এটি সহায়ক। যদিও এটি এক ধরণের পাগল। আমার ফাইল আকারটি এত বড় না হলে আমি গুগলের মাধ্যমে এটি স্বয়ংক্রিয়ভাবে করতে পারি। আমি কীভাবে এটি করি তা হ'ল গুগল আর্থে একটি .shp আমদানি করে এবং .kML হিসাবে সংরক্ষণ করে। আমি তখন গুগল ফিউশন টেবিলগুলিতে .kML আপলোড করি (এফওয়াইআই: গুগল ফিউশন টেবিলগুলির 100 এমবি আপলোড সীমা থাকে) এবং .csv এ রফতানি করি। তারপরে আমি .csv নিয়ে ঘুরে দেখতে পারি তবে আমি চাই - বৈশিষ্ট্যগুলি পরিবর্তন করুন, নতুন বহুভুজগুলি যুক্ত করুন যার জন্য আমার মধ্যে স্থানাঙ্কগুলি রয়েছে ইত্যাদি ইত্যাদি - এবং তারপরে আমি নতুন সঞ্চিত .csv কে গুগল ফিউশন টেবিলগুলিতে পুনরায় আপলোড করে .kML এ রফতানি করি , এবং গুগল আর্থে খুলুন।
রিক্ক

সুতরাং আমি অনুমান করি তাহলে প্রশ্নটি হয়ে যায় ... আমি কীভাবে একটি .shp ফাইলটিকে দুটি ভাগে ভাগ করব? এটি আমাকে 100 এমবি সীমাতে স্বতন্ত্র .kML ফাইলগুলি পাওয়ার অনুমতি দেবে এবং আমি রূপান্তর করতে উপরে বর্ণিত পদ্ধতিটি ব্যবহার করতে পারি।
রিক্ক

1
আমি নীচে জিজ্ঞাসা করা প্রশ্নের উত্তর দিয়েছি, তবে আপনার মন্তব্যটি দেখেছি। আপনার কেন একেবারেই সিএসভি দরকার? আপনার বৈশিষ্ট্য সম্পাদনা, জিআইএস-এ নতুন বহুভুজ ইত্যাদি যুক্ত করবেন না কেন (আপনি বলেছিলেন আপনার কিউজিআইএস আছে) এবং তারপরে এটি আপনার চূড়ান্ত কেএমএলে রফতানি করবেন না কেন?
user2856

@ রিক - আপনার মন্তব্যে প্রশ্নের জবাবে: একটি শেফফিল বিভক্ত করার একটি সহজ উপায় হ'ল আপনার শেফফিলের অংশে একটি স্থানিক নির্বাচন করা এবং তারপরে আপনার স্তরকে ডান ক্লিক করে "রফতানি" নির্বাচন করা। তারপরে আপনি কেবলমাত্র নতুন, আরও ছোট শেফফাইলে নির্বাচিত বৈশিষ্ট্যগুলি রফতানি করতে পারবেন। এটি কোনওভাবেই বৈজ্ঞানিক নয়, তবে এটি সহজ। আপনি আরও সুসংহত পদ্ধতির চাইলে বিকল্প হিসাবে আপনি কয়েকটি বৈশিষ্ট্য দ্বারা নির্বাচন করতে পারেন।
রাডার

উত্তর:


28

এখানে একটি সাধারণ স্ক্রিপ্ট যা ওজিআর পাইথন বাইন্ডিং ব্যবহার করে :

import ogr,csv,sys

shpfile=r'C:\Temp\test.shp' #sys.argv[1]
csvfile=r'C:\Temp\test.csv' #sys.argv[2]

#Open files
csvfile=open(csvfile,'wb')
ds=ogr.Open(shpfile)
lyr=ds.GetLayer()

#Get field names
dfn=lyr.GetLayerDefn()
nfields=dfn.GetFieldCount()
fields=[]
for i in range(nfields):
    fields.append(dfn.GetFieldDefn(i).GetName())
fields.append('kmlgeometry')
csvwriter = csv.DictWriter(csvfile, fields)
try:csvwriter.writeheader() #python 2.7+
except:csvfile.write(','.join(fields)+'\n')

# Write attributes and kml out to csv
for feat in lyr:
    attributes=feat.items()
    geom=feat.GetGeometryRef()
    attributes['kmlgeometry']=geom.ExportToKML()
    csvwriter.writerow(attributes)

#clean up
del csvwriter,lyr,ds
csvfile.close()

সম্পাদনা: এবং আপনার সিএসভি থেকে কেএমএলে রূপান্তর করতে অন্য স্ক্রিপ্ট

import ogr,csv,sys,os
ogr.UseExceptions()

csvfile=r'C:\temp\test.csv' #sys.argv[1]
kmlfile=r'C:\temp\test.kml' #sys.argv[2]

csvreader=csv.reader(open(csvfile,'rb'))
headers=csvreader.next()

ds = ogr.GetDriverByName('KML').CreateDataSource(kmlfile)
lyr = ds.CreateLayer(os.path.splitext(os.path.basename(kmlfile))[0])

for field in headers[:-1]: #skip kmlgeometry
    field_def = ogr.FieldDefn(field)
    print lyr.CreateField(field_def)

for rec in csvreader:
    feat = ogr.Feature(lyr.GetLayerDefn())
    for i,field in enumerate(headers[:-1]): #skip kmlgeometry
        feat.SetField(field, rec[i])
    feat.SetGeometry(ogr.CreateGeometryFromGML(rec[-1]))
    lyr.CreateFeature(feat)

del lyr,ds

আপনার পাঠকদের যে গুরুত্বপূর্ণ তথ্যের প্রয়োজন হবে সেই গুরুত্বপূর্ণ তথ্যের উপর নির্ভর করে সেই বাইন্ডিংগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে আপনি আরও বর্ণনা করতে পারেন।
অ্যান্ড্রু এস

8

আপনি যদি নিজের শেফফাইলটিকে স্থানান্তরে রূপান্তর করেন তবে আপনার নিম্নলিখিতগুলি করতে সক্ষম হবেন:

1) আউটপুট পরীক্ষা করার জন্য এসকিউএল পরীক্ষা করুন:

প্রাক্তন।

কল 1, কল 2, কল 3, এসকেএমএল (জ্যামিতি_ কলাম) ট্যাব থেকে নির্বাচন করুন

2) ফলাফলের সাথে সন্তুষ্ট হয়ে গেলে আপনি এটি CSV ফর্ম্যাটে রফতানি করতে পারেন:

/programming/5776660/export-from-sqlite-to-csv-using-shell-script

স্পাটিয়ালাইট সম্পর্কিত আরও তথ্যের জন্য:

https://www.gaia-gis.it/fossil/libspatialite/index

স্পেসিয়ালাইট এসকিউএল ফাংশন:

http://www.gaia-gis.it/gaia-sins/spatialite-sql-3.0.0.html


3

আপনি কিউজিআইএস-এ কাজ করছেন, আপনি তাত্ক্ষণিকভাবে স্তরটিতে>> হিসাবে সংরক্ষণ করুন -> সিএসভিতে ডান ক্লিক করে একটি সিএসভি নথি তৈরি করতে পারেন।

আপনি যদি আর্কম্যাপের সাথে কাজ করছেন, তবে আপনি কেএমএল (প্রোগ্রামে অনুসন্ধান বিকল্পে যান) সরঞ্জামটি লেয়ারটি ব্যবহার করে কেএমএল রফতানি করতে পারেন । কিছু কারণে এটি একটি কেএমএল পরিবর্তে একটি কেএমজেড জেনারেট করে (অন্ততপক্ষে যা আমার ক্ষেত্রে ঘটেছিল)।

কোনও কেএমজেডকে কেএমএলে রূপান্তর করতে:

  • আপনার কেএমজেড ফাইলটি গুগল আর্থে আমদানি করুন এবং আপনার স্তরটিতে ডান ক্লিক করুন এবং কেএমএল হিসাবে এটি সংরক্ষণ করুন
  • কিউজিআইএস খুলুন এবং কেএমএল ফাইলটি টানুন এবং ফেলে দিন - এটি স্বয়ংক্রিয়ভাবে স্তরটি লোড করবে (> কিউজিআইএস ২.১০ পিআইএসএ)
  • ফাইলটিতে ডান ক্লিক করুন এবং এটিকে CSV হিসাবে সংরক্ষণ করুন

আপনি আর্কজিআইএসের সাথে কাজ করছেন তবে এই পদ্ধতিটি দীর্ঘতর তবে কিউজিআইএসে এটি কোনও সময়েই করা যায় না। আপনাকে যে কোনও ক্ষেত্রে কিউজিআইএস ইনস্টল করতে হবে।


কিউজিআইএস-এর জন্য আপনার সমাধানটি পরীক্ষা করে দেখে এটি কার্যকর হয় না। সিএসভি হিসাবে সংরক্ষণ করুন স্থানিক উপাদান সংরক্ষণ করে না।
ফিলিপ শোয়ার্জ

কিউজিআইএস আপনাকে রফতানির সময় ডব্লুকেটি নির্বাচন করার জন্য একটি বিকল্প দেয় - এই রফতানির জ্যামিতি (স্পেসিয়াল উপাদান) ডাব্লুকেটি ফর্ম্যাটে শেপ ফাইলের বাকী বৈশিষ্ট্যগুলি সহ।
কোজির

QGIS 3.0 থেকে আপনি অধীনে "লেয়ার বিকল্প" রপ্তানি সংলাপে "জ্যামিতি" ড্রপডাউন তালিকা খোঁজ করবে, এবং নির্বাচন করুন AS_XY, AS_XYZঅথবাAS_WKT
লিও

2

কমান্ড লাইনে আপনি এটি ব্যবহার করতে পারেন ogr2ogr:

ogr2ogr -f CSV output.csv input.shp -lco GEOMETRY=AS_XYZ

lco"লেয়ার ক্রিয়েশন অপশন" এর জন্য, আমি মনে করি। অন্যান্য উপলভ্য বিকল্পগুলি এখানে নথিভুক্ত করা হয়েছে: http://www.gdal.org/drv_csv.html


লিও, আমি পেতে "ত্রুটি 1 could'nt অনুরোধ স্তর 'জ্যামিতি = AS_XYZ' সংগ্রহ এর আমি QGIS মধ্যে ফাইল আনতে পারেন এবং স্পষ্ট একটি ভেক্টর দেশ প্রান্তরেখা ধারণকারী
অ্যান্ড্রু এস

-1

'জিওপ্রসেসিং মডেল এবং স্ক্রিপ্ট সরঞ্জাম গ্যালারী' তে একটি সরঞ্জাম রয়েছে যা আপনি যা খুঁজছেন তা করে। এটি এক্সেল বা সিএসভি রপ্তানি করতে পারে।

http://resources.arcgis.com/gallery/file/geoprocessing/details?entryID=95009B25-1422-2418-7FB5-B8638ECB2FA9


1
আমি এটি একবার দেখেছিলাম, এটি কোনও ফর্ম্যাটে জ্যামিতি রফতানি করে না, কেএমএল ছেড়ে দিন।
ব্যবহারকারী 2856

-1

কেবল চাপের মানচিত্রে রূপান্তর সরঞ্জামে যান। তারপরে টেবিলের কাছে যেতে হবে excel একটি এক্সেল ফাইল তৈরি করা হবে। সেই এক্সেল ডকটিকে .csv ফাইলে রূপান্তর করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.