জিওপ্যান্ডাস টু ফাইলে () সমন্বিত সিস্টেম ছাড়াই জিওডাটা ফ্রেম সংরক্ষণ করে


13

আমার আছে

  • জিওপান্ডাস 0.2.1 পি 2727 y
  • fiona 1.7.0 np110py27_1
  • পাইথন 2.7.10

অ্যানাকোন্ডা 2-4.1.1-উইন্ডোজ-x86 পরিবেশে ইনস্টল করা হয়েছে। আমি GeoDataFrameইনপুট ডেটাসেটগুলি পড়তে এবং ডেটা পরিচালনা করতে সক্ষম হয়েছি তবে কোনও আউটপুট ডেটাসেটের সমন্বয় ব্যবস্থা সংরক্ষণ হয় না সংরক্ষণ করে।

import geopandas as gpd
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world.to_file(driver='ESRI Shapefile',filename=r'C:\GIS\Temp\world_out.shp')

world_out.shpবৈশিষ্ট্য এবং সোর্স shapefile স্কিমা থাকে, কিন্তু তুল্য নেই সিস্টেম undefined করা হয় ( <Unknown>)। world_out.prjফাইল 0 কিলোবাইট এবং কিছু থাকে না।

out = gpd.read_file(r'C:\GIS\Temp\world_out.shp')
print out.crs
>>> {}

আমি খাঁটি ফিওনা ব্যবহার করে এই অপারেশনটি সম্পাদন করার পরীক্ষা করেছি এবং crsতথ্য সংরক্ষণ করে এটি কাজ করে :

import fiona

datasrc_path = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb'

with fiona.drivers():
    with fiona.open(datasrc_path,layer='cities') as source:
        meta = source.meta
        meta['driver'] = 'ESRI Shapefile'
        meta['layer'] = source.name

        with fiona.open(r'C:\GIS\CitiesFiona.shp', 'w', **meta) as sink:
            for f in source:
                sink.write(f)

CitiesFiona.prjফাইল তুল্য সিস্টেম সম্পর্কে তথ্য থাকে না।

সুতরাং, মনে হচ্ছে জিওপ্যান্ডাস পদ্ধতিটি crsকল করার সময় আউটপুট ডেটাসেটে ডেটা ফ্রেমটি পড়তে / লিখতে সক্ষম হয় না to_file()। আমি বিভিন্ন উত্স এবং ডেটাসেট থেকে নির্মিত কল to_file()করার চেষ্টা করেছি GeoDataFramesএবং সমন্বিত সিস্টেমের তথ্য কখনও আউটপুট ডেটাসেটে উপস্থিত ছিল না।

এর আগে কি কেউ এই ইস্যুতে ছড়িয়ে পড়েছে? কেউ কি এটি পরীক্ষা করতে পারে?

উত্তর:


11

আমি আগে এই আচরণ জুড়ে এসেছি।

আপনার পদ্ধতিতে স্পষ্টভাবে সুপরিচিত পাঠ্য (crs_wkt) স্ট্রিংটি পাস করতে হবে to_file()। তারপরে স্ট্রিংটি পাস হয়ে যাবে fiona.open(), যা .prj ফাইলটি লিখে দেয়।

আপনার নমুনা কোড ব্যবহার করে এই জাতীয় কিছু করা:

ws = r"D:\temp_se"
prj_file = gpd.datasets.get_path('naturalearth_lowres').replace(".shp",".prj")
prj = [l.strip() for l in open(prj_file,'r')][0]
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
temp_shp = os.path.join(ws,"world_out.shp")
world.to_file(filename=temp_shp,driver='ESRI Shapefile',crs_wkt=prj)

উত্পাদন করা উচিত: এখানে চিত্র বর্ণনা লিখুন

read_file()এবং to_file()ফাংশন কেবল মোড়কের ফাংশন হিসাবে পরিবেশন করা। তারা কল করে fiona.open(), যার স্বাক্ষর নীচে দেখানো হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

জিওপ্যান্ডাস সহ ফাইলগুলি পড়তে / লেখার সময় আপনাকে স্পষ্টতই একটি সিআরএস_উইকিটি মান পাস করতে হবে।


1
এই পোস্ট করার জন্য ধন্যবাদ। আশ্চর্যজনকভাবে যথেষ্ট, আমি আর এই সমস্যাটি পুনরুত্পাদন করতে পারি না। আমি উপরে পোস্ট করা কোডটি চালানোর সময়, আমি সম্পর্কিত .prjতথ্য দিয়ে ফাইলটি পাই crs। এটা হতে পারে, কারণ আমি উন্নত করেছেন fionaকরতে fiona 1.7.0 np110py27_2
অ্যালেক্স তেরেশেনকভ

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