"অবস্থান অনুসারে অ্যাট্রিবিউটে যোগ দিতে" অজগর বিকল্প আছে কি?


9

আমি join attributes by locationQGIS মেনু ভেক্টর> ডেটা ম্যানেজমেন্ট সরঞ্জামগুলিতে পাওয়া ফাংশনটি সম্পাদন করার চেষ্টা করছি । আমি এর জন্য ওপেন সোর্স অজগর বিকল্পটি চাইছি। আমি জানি অর্কি একটি spatial joinফাংশন আছে কিন্তু আমি ইএসআরআই পরিবেশের বাইরে এটি সম্পাদন করার চেষ্টা করছি।


1
আমি প্লাগইন Join attributes by locationথেকে প্রকৃত কমান্ডের উত্স কোডটি দেখার পরামর্শ দেব fTools: doSpatialJoin.pyবিশেষত compute()পদ্ধতিটি। এটি থেকে কোনও ইউআই কোড মুছে ফেলা এবং এটি একটি সরল পাইথন ফাংশনে ফেলা খুব শক্ত হওয়া উচিত নয়।
লুকাশ গ্রাফ

হাই আমার কিছুটা আলাদা সমস্যা আছে, আমি দুটি স্তরের মধ্যে একটি যৌথ আছে কিনা তা পরীক্ষা করে দেখতে চাই! আমি এর জন্য একটি মুক্ত উত্স অজগর বিকল্পটি চাইছি। S.join ফাংশনটি ব্যবহার করা হয়েছে এবং আমি ESRI পরিবেশের বাইরে এটি সম্পাদন করার চেষ্টা করছি কিনা তা পরীক্ষা করতে চাই .. কেউ কি আমাকে দয়া করে সহায়তা করতে পারেন!
রানিয়া বেন othmen

উত্তর:


8

আপনি শেপলি এবং ফিয়োনাকে একবার দেখে নিতে পারেন । ফিওনা স্থানিক ফাইল আমদানি এবং রফতানিটিকে সহজ করার জন্য জিডালের একটি মোড়ক। আকৃতির জ্যামিতির কার্যকারিতা সরবরাহ করে। আপনাকে ধারণা দেওয়ার জন্য এখানে একটি খুব সাধারণ উদাহরণ is এটি বহুভুজের মধ্যে সমস্ত পয়েন্টের বহুভুক্ত বৈশিষ্ট্যগুলিতে যোগদান করে।

আমি যে উদাহরণস্বরূপ ডেটা ব্যবহার করেছি তা হ'ল এই বহুভুজ এবং এই পয়েন্টগুলি

import fiona
from shapely.geometry import shape
from copy import deepcopy

with fiona.open("planning_neighborhoods.shp", "r") as n: 

    with fiona.open("Schools_Private_Pt.shp", "r") as s:

        # create a schema for the attributes
        outSchema =  deepcopy(s.schema)
        outSchema['properties'].update(n.schema['properties'])

        with fiona.open ("Schools_withNbhd.shp", "w", s.driver, outSchema, s.crs) as output:

            for school in s: 
                for neighborhood in n:
                    # check if point is in polygon and set attribute
                    if shape(school['geometry']).within(shape(neighborhood['geometry'])):  
                        school['properties']['neighborho'] = neighborhood['properties']['neighborho'] 
                    # write out
                        output.write({                                 
                            'properties': school['properties'], 
                            'geometry': school['geometry']
                        })

ধন্যবাদ @ সেনজেল দেখে মনে হচ্ছে এটি আমাকে সঠিক পথে রাখবে! আমি লাইন এবং বহুভুজ (বিশেষত নদীগুলি মডেল কোষগুলিকে ছেদ করে যেখানে সন্ধান করে) এর সাথে যুক্ত হতে আগ্রহী এবং আমি মনে করি যে এটি আপনার উদাহরণ অনুসরণ করে কাজ করবে।
mishaF

@ সেনজেল ​​এই পদ্ধতিগুলিতে নিযুক্ত প্লাগইনগুলি ব্যবহার করে কিউগিস স্টেশনগুলি মডিউল এবং জিডিএল স্থাপনের প্রয়োজন?
ব্যবহারকারী 25976

@ ব্যবহারকারী 25976 দুঃখিত, নিশ্চিত না যে আমি আপনার প্রশ্নটি বেশ বুঝতে পেরেছি। আমার কোড উদাহরণটি একক পাইথন স্ক্রিপ্ট। ফিওনা এবং সুদৃশ্য উভয়ের জন্যই জিডিএল প্রয়োজন।
চেঞ্জেল

@ চেঞ্জেল এক্সকিউজ মি, আমাকে স্পষ্ট করতে দিন (আমি প্রোগ্রামিংয়ে নতুন)। একক পাইথন স্ক্রিপ্ট সম্পর্কে: আপনার অর্থ যে ফিয়োনা এবং সুপরিচিত আমদানিতে লেখা একটি প্লাগইন কিউজিআইএস ব্যবহারকারীরা তাদের কম্পিউটারে পাইথন বা মডিউল ইনস্টল না করেও ব্যবহার করতে পারবেন?
ব্যবহারকারী 25976

@ ব্যবহারকারী 25976 তাদের কম্পিউটারে মডিউল ইনস্টল করা দরকার। উদাহরণস্বরূপ এখানে দেখুন
gel

2

যদিও এখনও প্রান্তগুলির চারপাশে কিছুটা রুক্ষ, বিশেষত যখন এটি ডকুমেন্টেশন এবং উদাহরণগুলির ক্ষেত্রে আসে তবে জিওপ্যান্ডসের ভবিষ্যতটি উজ্জ্বল দেখায়। এটি মূলত পান্ডাস ডেটাফ্রেমের শক্তিকে সুশৃঙ্খল ভূগোলীয় সামর্থ্যের সাথে একত্রিত করে।

আপনি যে ফাংশনটির জন্য সন্ধান করেন তাকে বলা হয় সিজইন

আপনার মেশিন / ইনস্ট্যান্সটিতে অপারেশন করার জন্য পর্যাপ্ত মেমরি রয়েছে তা নিশ্চিত করুন

import geopandas as gpd
import pandas as pd
import os

gdfLeft = gpd.read_file(os.path.join(PATH,INPUT_FILE_NAME_1))
gdfRight = gpd.read_file(os.path.join(PATH,INPUT_FILE_NAME_2))

gdfJoined = gpd.sjoin(gdfLeft, gdfRight, how="left", op='intersects')

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