পাইথন ব্যবহার করে অনুমানিত স্থানাঙ্ক থেকে শেফফিল রূপান্তর করুন


10

নবাবি এখানে জিআইএসের সাথে লড়াই করছেন। আমি মিলউয়াকি শহরের কাউন্টি ওয়েবসাইট কাউন্টি ওয়েবসাইটে পাওয়া শেফফিল ব্যবহার করে শহরের জন্য ওয়ার্ডগুলি মানচিত্র করার চেষ্টা করছি । আমি এখানে কিছু সাফল্যের সাথে থ্রেড অনুসরণ করছি । আমার কোডটি দেয়:

from pyproj import Proj, transform
# wisconsing EPSG:32054
# epsg:4326 is for the entire world, wgs 84...not obvious
inProj = Proj(init='epsg:32054')
outProj = Proj(init='epsg:4326')
x1,y1 = 2560131.496875003, 406816.434375003
x2,y2 = transform(inProj,outProj,x1,y1)
print(x2,y2)

আউটপুট সহ,

-65.70220967836329 43.08590211722421

সমস্যা হ'ল এটি ভুল। মিলওয়াকির জন্য দীর্ঘ / শ্রাবণটি -87.863984 এবং 42.920816।

দ্বিতীয়ত, আমি পুরো শ্যাফিল ফাইলের জন্য কীভাবে এই প্রোগ্রামটি করতে পারি। আমি এটি বেসম্যাপে প্লট করতে চাই। আমি যখন এই থ্রেডটি অনুসরণ করার চেষ্টা করি তখন আমি একটি ত্রুটি কোড পাই:

with fiona.open("ward2012/ward.shp") as shp:
    ori = Proj(init='epsg:32054' ),
    dest= Proj(init='EPSG:4326',preserve_units=True)
    with fiona.open('ward2012/MKE_wards_lat_lon.shp', 'w', 'ESRI Shapefile', shp.schema.copy(), crs=from_epsg(4326))as output:
        for point in shp:
            x,y =  point['geometry']['coordinates']
            point['geometry']['coordinates'] = transform(ori, dest,x,y)
            output.write(point)

ত্রুটি:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-139-a5079ab39f99> in <module>()
      4     with fiona.open('ward2012/MKE_wards_lat_lon.shp', 'w', 'ESRI Shapefile', shp.schema.copy(), crs=from_epsg(4326))as output:
      5         for point in shp:
----> 6             x,y =  point['geometry']['coordinates']
      7             point['geometry']['coordinates'] = transform(ori, dest,x,y)
      8             output.write(point)

ValueError: not enough values to unpack (expected 2, got 1)

উত্তর:


10

প্রথম প্রশ্নে, 'epsg: 32054' কোডটির ফুট ইউনিট রয়েছে। এই কারণে, inProj = Proj(init='epsg:32054')লাইনে প্যারামিটার হিসাবে 'preserv_units = সত্য' ব্যবহার করা প্রয়োজন । এখন, পরবর্তী কোডটি ভালভাবে কাজ করে:

from pyproj import Proj, transform
# wisconsing EPSG:32054
# epsg:4326 is for the entire world, wgs 84...not obvious
inProj = Proj(init='epsg:32054', preserve_units=True)
outProj = Proj(init='epsg:4326')
x1,y1 = 2560131.496875003, 406816.434375003
x2,y2 = transform(inProj,outProj,x1,y1)
print (x2,y2)
(-87.9028568836077, 43.09691266312185)

দ্বিতীয় প্রশ্নে, ওয়ার্ড.শ্প একটি বহুভুজ আকৃতির ফাইল; বিন্দু শেফফিল নয়। এই ক্ষেত্রে, আপনি প্রত্যাখ্যানের জন্য জিওপ্যান্ডাস মডিউলটি ব্যবহার করতে পারেন। আমার প্রস্তাবিত কোডটি (আমার নির্দিষ্ট পথ সহ):

import geopandas as gpd

tmp = gpd.GeoDataFrame.from_file('/home/zeito/pyqgis_data/ward2012/ward.shp')

tmpWGS84 = tmp.to_crs({'proj':'longlat', 'ellps':'WGS84', 'datum':'WGS84'})

tmpWGS84.to_file('/home/zeito/pyqgis_data/ward2012/wardWGS84.shp')

পরের ছবিতে, আপনি কিউজিআইএস-এর মানচিত্র ক্যানভাসে বিবেচনা করার আগে পুনঃনির্মাণিত শেফফিল (ওয়ার্ডডাব্লু জিএস 84.শ্প) এবং পয়েন্টটি (-87.9028568836077, 43.09691266312185) দেখতে পাবেন:

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

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