আরকপাই ব্যবহার করে বহুভুজের প্রতিটি পাশের ওরিয়েন্টেশন গণনা করছেন?


9

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

আমার মনে হয়েছিল যে একটি পদ্ধতির মধ্যে বহুভুজকে রেখায় বিভক্ত করা এবং প্রতিটি লাইনের ওরিয়েন্টেশন গণনা করা হয়েছিল, তবে অসুবিধাটি হ'ল আমাকে তখন সেই লাইনের বাইরের মুখটি চিহ্নিত করতে হবে। যদিও বেশিরভাগ বহুভুজ সরলরেখাগুলি সহ সরল চার পাশের চিত্র, তবে এখানে একটি ছোট সংখ্যা রয়েছে যেখানে এটি ঘটেনি (এমন একটি বিষয় যা আমি কেবল বিবেচনা করতে চাই, তবে এখনও সমাধান করতে হবে না)।

আমি পাইথনের সাথে পরিচিত এবং স্ক্রিপ্ট থেকে এগুলি করার পরিকল্পনা করেছি।


1
এই প্রশ্নের সাহায্যের উত্তরগুলি করুন: gis.stackexchange.com
শান

@ শীন - ধন্যবাদ, হ্যাঁ এটি সাধারণভাবে সহায়তা করে। আমি নির্দিষ্ট আরকজিআইএস কমান্ডগুলির সাথে পরিচিত নই যা এটি করতে ব্যবহৃত হতে পারে। এছাড়াও, বহুভুজের মধ্যে রেখার অভ্যন্তরীণ / বাহ্যিক মুখটি এখনও কী আছে তা জানার বিষয়টি।
djq

আপনি যখন 'অরিয়েন্টেশন' বলছেন, আপনি আমার পক্ষে এটি যথেষ্ট পরিমাণে সংজ্ঞায়িত করেননি --- উদাহরণস্বরূপ, একটি নিখুঁত ষড়্ভুজের অভিমুখ কী?
ড্যান এস

@ ড্যান এস। বহুভুজের মধ্যে প্রতিটি লাইনের ওরিয়েন্টেশন অন্তর্ভুক্ত করার জন্য আমি আমার উত্তরটি সম্পাদনা করেছি।
djq

দুঃখিত উত্তরদাতারা - গতকাল আমি যথাযথভাবে অনুগ্রহটি নির্ধারণ করতে পরিচালিত হইনি।
djq

উত্তর:


6

আপনি যদি কেবল সংখ্যাগরিষ্ঠতা চান তবে উপরের @ ম্যাপের্জের উত্তরটি দেখুন।

অন্যথায়, আপনি যেমনটি বলেছেন আপনি বহুভুজ টু লাইন সরঞ্জামটি ব্যবহার করে বহুভুজগুলি লাইনে বিভক্ত করতে পারেন । এটি একটি বাম এবং ডান এফআইডি ফিল্ড যুক্ত করেছে, যেখানে বাহ্যিক বহুভুজ না থাকলে ক্ষেত্রটি -1 হয় - এটি আপনার বিল্ডিংগুলি সংলগ্ন বা ওভারল্যাপে রয়েছে কিনা তা নিয়ে কিছুটা হাঁসফাঁস করতে পারে।

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

ধরুন আপনার উত্তর ক্ষেত্রটি উত্তর থেকে গণনা করা হয়েছে যেখানে দিকটি বাম_এফআইডি -1 হবে সঠিক হবে এবং ডান_এফআইডি -1 হলে 180 ° যুক্ত করুন দিকটি পাওয়া যাবে ° তারপরে মূল এফআইডি এর উপর ভিত্তি করে আপনি সমষ্টি করতে পারবেন, দৈর্ঘ্যের ভিত্তিতে সংখ্যাগরিষ্ঠ দিক পাবেন etc.

বহুভুজ টু লাইন সরঞ্জামটি স্ক্রিপ্টযোগ্য, (যতদূর আমি জানি) সিওজি সরঞ্জামগুলি নেই, সুতরাং আপনাকে সেখানে নিজেই কিছু নিয়ে আসতে হবে।

আশাকরি এটা সাহায্য করবে!


2
নির্লজ্জ প্লাগ এবং একটি মন্তব্য: প্রথমত, যদি আপনার কাছে কোনও তথ্য লাইসেন্স না থাকে, কোড. google.com/p/boundary-generator পলিগন থেকে লাইন সরঞ্জামের মতো কম-বেশি একই কাজ করে। দ্বিতীয় - এটি সামগ্রিক বহুভুজের সাধারণ ধরণের দিকনির্দেশ দেখার চেয়ে আপনাকে আরও অনেক তথ্য দেয় ... উদাহরণস্বরূপ আপনি প্রতিটি স্বতন্ত্র প্রাচীরের দিকটি বিবেচনায় রেখে আরও সুনির্দিষ্ট সূর্যের এক্সপোজার গণনা করতে ফলাফল টেবিলটি ব্যবহার করতে পারেন ।
ড্যান এস

5

বহুভুজ মূল কোণ (কার্টোগ্রাফি) গণনা করুন

ইনপুট বহুভুজ বৈশিষ্ট্যের প্রভাবশালী কোণগুলি গণনা করে এবং বৈশিষ্ট্য শ্রেণিতে একটি নির্দিষ্ট ক্ষেত্রে মানগুলি নির্ধারণ করে

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//007000000028000000.htm


5

ওরিয়েন্টেশন সন্ধান করা

একটি স্ক্রিপ্টের মধ্যে, বহুভুজটি রিংয়ের সেট হিসাবে উপলব্ধ হবে - একটি বহিরাগত রিং এবং শূন্য বা আরও অভ্যন্তরীণ রিং - প্রতিটি রিংটি চক্রাকারে আদেশযুক্ত ভেক্টরগুলির দ্বিগুণ দ্বারা প্রতিনিধিত্ব করা হয় (v [0], v 1 , ... , ভি [মি -1], ভি [এম] = ভি [0])। প্রতিটি ভেক্টর একটি শীর্ষবিন্দুটির স্থানাঙ্ক দেয় (কোনও দুটি ধারাবাহিক অনুভূতি সহ নয়)। এ থেকে এটি সরল, যেমন অন্যরা নির্দেশ করেছেন, সাধারণ ভেক্টরগুলি (যেমন, প্রান্তের দিকের দিকে লম্ব ভেক্টর) প্রাপ্ত করার জন্য:

n [i] = টি (ভি [আমি + 1] - ভি [আই])।

"টি" অপারেশন একটি ভেক্টরকে 90 ডিগ্রি ঘড়ির কাঁটার বিপরীতে ঘোরায় :

t ((x, y)) = (y, -x)

কেবলমাত্র এই সাধারণ ভেক্টরগুলির দিকনির্দেশই গুরুত্বপূর্ণ, তাই তাদের ইউনিট দৈর্ঘ্য হিসাবে পুনরুদ্ধার করুন: একটি ভেক্টর (x, y) আবার (x / s, y / s) যেখানে s = Sqrt (x ^ 2 + y ^ 2) (যা x) এটি সম্পর্কিত প্রান্তের দৈর্ঘ্য)। এখন থেকে, ধরে নেওয়া যাক এটি হয়ে গেছে। ফলাফল হিসাবে ইউনিট স্বাভাবিক ভেক্টরগুলির উপাদানগুলি লিখুন

n [i] = (আপনি [আমি], ভি [আমি]), আই = 0, 1, ..., এম -1।

ভিতরে থেকে বাইরে বৈষম্যমূলক

আপনি মন্তব্য হিসাবে, এটি একটি দিকনির্দেশক অস্পষ্টতা ছেড়ে দেয়: আমরা n [i] বা -n [i] ব্যবহার করা উচিত? কোনটি বাইরের দিকে নির্দেশ করে? এই প্রশ্নের খোঁজার সমতূল্য ডিগ্রী এর গাউস মানচিত্র । এটি গণনা করার জন্য, আপনাকে একটি কোণটি ঘুরিয়ে দেওয়ার সাথে সাথে সাধারণ দিকগুলি পরিবর্তিত হওয়া কোণগুলি যোগ করতে হবে। সাধারণ ভেক্টরগুলির ইউনিটের দৈর্ঘ্য হওয়ায় দুটি ধারাবাহিক প্রান্তের মধ্যবর্তী কোণটির কোসাইন হয়

Cos (q_i) = n [i]। n [i + 1] = আপনি [আমি] * আপনি [আমি + 1] + ভি [আমি] * ভি [আমি + 1], আই = 0, 1, ..., মি -1।

(এন [এম] = এন [0] নির্ধারণ করুন)

দুটি ধারাবাহিক প্রান্তের মধ্যবর্তী কোণটির সাইন

পাপ (q_i) = n [i]। টি (এন [আমি + ১]) = ইউ [আই] * ভি [আমি + ১] - ভি [আই] * ইউ [আমি + ১]।

(দ্রষ্টব্য যে এই গণনাগুলিতে এখন পর্যন্ত কেবল পরিমাণের পরিমাণ, পার্থক্য এবং পণ্যগুলির প্রয়োজন any) এই জাতীয় (কোসাইন, সাইন) জোড়টিতে মূল বিপরীতমুখী টানজেন্ট ফাংশন (এটিান 2) প্রয়োগ করার সাথে -180 এবং 180 ডিগ্রির মধ্যে কো_কিউ দেয় _ I = 0, 1, ..., n-1 এর জন্য এই কোণগুলির সংমিশ্রণ করা রিংয়ের মোট বক্রতা (যা ভাসমান বিন্দু ত্রুটি অবধি) উত্পন্ন করে, যা অবশ্যই 360 ডিগ্রির একাধিক হতে হবে; একটি বন্ধ নন-স্ব-ছেদযুক্ত রিংয়ের জন্য এটি +360 বা -360 হবে। প্রথম ক্ষেত্রে ডিগ্রি 1 এবং দ্বিতীয় ক্ষেত্রে ডিগ্রি -1 হয়। যখন বাইরের রিংয়ের ডিগ্রি +1 হয় এবং অভ্যন্তরের রিংয়ের ডিগ্রি -1 হয় তখন নরমালগুলি সমস্ত বাহ্যিকভাবে কেন্দ্রিক হয়। এ নিয়ম অনুসারে প্রয়োজনীয় হিসাবে রিং-ওরেণ্ট করুন ring এটি হ'ল, যদি কোনও রিংয়ের ডিগ্রি প্রয়োজন হয় তার বিপরীত হয়, তবে সেই রিংটির জন্য সমস্ত স্বাভাবিককে উপেক্ষা করুন। এখন আপনি আপনার অন্তরাল গণনা নিয়ে এগিয়ে যেতে পারেন।


একটি খুব ব্যাপক উত্তরের জন্য আপনাকে ধন্যবাদ। আপনি যখন বলবেন, 'কোনও স্ক্রিপ্টের মধ্যেই বহুভুজটি রিংয়ের সেট হিসাবে পাওয়া যাবে' বহুভুজটি কীভাবে উপলব্ধ? যদিও কিছু অজগর স্ক্রিপ্টিংয়ের সাথে পরিচিত তবে আমি বহুভুজকে এভাবে ব্যাখ্যা করতে জানি না। আমি এটি ধীরে ধীরে পড়ছি এবং এটি বোঝার চেষ্টা করছি, তবে আমার কিছু ব্যাখ্যা সিউডোকোডে অনুবাদ করতে আমার অসুবিধা হচ্ছে যা আমি লিখতে পারি।
djq

এই উত্তরের কয়েকটি নোট: সাধারণ জিআইএস এপিআইগুলি সর্বদা ঘড়ির কাঁটার বিপরীতে ক্রিয়াকলাপের বাইরের অংশ উপস্থাপন করবে, আইআইআরসি, যার অর্থ আপনাকে বাইরে থেকে বাইরে বৈষম্যমূলক অভিনব কাজ করতে হবে না - কেবল বাইরের রিংগুলিতে ঘড়ির কাঁটার ঘূর্ণন ব্যবহার করুন এবং গর্তের উপরের দিকে ঘড়ির কাঁটা সেলেনিয়াসের জন্য একটি ব্যাখ্যা: 'রিংস অফ সেট' বিটটি কীভাবে আর্কজিআইএসের পাইথন সহ বেশিরভাগ এপিআই আপনাকে তার বহুগুণকে তার উপাদান লাইন বিভাগগুলিতে বিভক্ত করতে দেয় - একটি রিং এগুলির একটি বদ্ধ বাঁক। যেহেতু বহুভুজ দ্বীপপুঞ্জ এবং গর্তগুলিকে সমর্থন করতে পারে তাই আপনার একাধিক রিং থাকতে পারে ...
ড্যান এস

@ ড্যান আমি চাই যে জিআইএসগুলি এমন ধারাবাহিক উপস্থাপনা বজায় রেখেছিল। কয়েক বছর ধরে ইএসআরআই সফ্টওয়্যার নেতিবাচক এবং ইতিবাচকমুখী বহুভুজগুলির মধ্যে পিছনে পিছনে ওঠানামা করেছে এবং কেবল তাদের বিনা কেন্দ্রিয় রেখে দিয়েছে। এই মুহুর্তে আমি নিশ্চিত নই যে আমি তাদের বর্তমান পদ্ধতির বিষয়ে নথিভুক্ত বিবৃতিতেও নির্ভর করব: আমি সতর্ক থাকব। আপনি ইতিমধ্যে একটি রিংয়ের সমস্ত প্রান্ত প্রক্রিয়া করার পরে ওরিয়েন্টেশনটি পরীক্ষা করতে খুব কম খরচ হয়।
whuber

.. ঠিক আছে, আমি সেই ছোট আইআইআরসি অস্বীকৃতি রেখেছি, ধন্যবাদ। ;) এটি প্রায়শই আমি ইএসআরআই স্ট্যাকের জ্যামিতি স্তরের স্টাফগুলি করি না।
ড্যান এস

@ ডান এস - অজগরটিকে কীভাবে প্রোগ্রাম করা যায় সে সম্পর্কে আমি এখনও কিছুটা অস্পষ্ট। এর জন্য কি কোনও গাইডলাইন আছে?
djq

1

এই সাহায্য করতে পারেন?


এটি একটি আকর্ষণীয় কাগজ যা আপনি খনন করেছেন। যাইহোক, বর্ণিত পদ্ধতিগুলির মধ্যে একটিও সৌর এক্সপোজার গণনার সাথে প্রাসঙ্গিক নয় (যদি না গণনাটি অপরিশোধিত সান্নিধ্য হিসাবে চিহ্নিত করা হয়, যা এখানে কেস হিসাবে দেখা যায় না)।
হোবার

1

/ * সম্ভবত এটি সাহায্য করে:

আজিমুথ - পাই / 2 হ'ল একটি আরএইচআর বহুভুজটির বাহুগুলির বাহ্যিক মুখী অবস্থান:

এখানে একটি পোস্টজিআইএস উদাহরণ রয়েছে, আপনি শেষে বিবৃতিটি ব্যবহার করে bldg117862 সারণী তৈরি করতে পারেন। এসআরআইডি হ'ল ইপিএসজি 2271 (পিএ স্টেটপ্ল্যান উত্তর পা) এবং জ্যামিতিটি একটি মাল্টিপলিজোন। আরকজিআইএস 10 এ ভিজ্যুয়ালাইজ করতে, সারণী তৈরির পরে সারণি তৈরির পরে কোয়েস্টি / সাব-কোয়েরিগুলি পোস্টের সংযোগে পেয়ার করুন বেলগ 117862। * /

- === QUERY থেকে শুরু ===

/ * আউটার ক্যোয়ারী বাহ্যিক অরথোগোনালগুলির দিকনির্দেশনা সরবরাহ করে এবং বাহকের অর্ডপোনাল লাইনগুলি উভয় পক্ষের মিডপয়েন্ট থেকে সমান দৈর্ঘ্যের হিসাবে তৈরি করে।

প্রভাবশালী মুখোমুখি দিক (গুলি) অবতীর্ণ ক্রম অনুসারে ওরিয়েন্টেশন অনুসারে ভাগ করা দৈর্ঘ্যের যোগফল হবে /

দিকনির্দেশ হিসাবে সাইড_id, দৈর্ঘ্য, ডিগ্রি (orthoaz) হিসাবে সাইন নির্বাচন করুন, st_makeline (st_setsrid (st_line_interplate_Point (ভূত, .5), 2271), st_setsrid (st_makePoint (st_x (st_line_interplate_Point (geom, .5)) sin (দৈর্ঘ্য (.5)) + (দৈর্ঘ্য (.5)) orthoaz))), st_y (st_line_interplate_Point (geom, .5%)) + (দৈর্ঘ্য * (কোস্ট (orthoaz)))), 2271)) থেকে ভূত হিসাবে

- পরবর্তী বাইরের সাবকোয়ারি পক্ষের বিন্দু জোড়া থেকে রেখাগুলি তৈরি করে, প্রতিটি বিভাগের জন্য বাহ্যিক অরথোগোনালের আজিমুথ (অর্থোজ) গণনা করে

(নির্বাচন করুন bldg2009gid, লাইন_আইডি, st_leth (st_makeline (প্রারম্ভিক পয়েন্ট, শেষ পয়েন্ট)) :: দৈর্ঘ্য হিসাবে সংখ্যা (10,2), আজিমুথ (প্রারম্ভপয়েন্ট, শেষ পয়েন্ট), আজিমুথ (সূচনা পয়েন্ট, শেষ পয়েন্ট) - পাই () / 2 অর্থোয়েজ হিসাবে, st_makeline ( সূচনা পয়েন্ট, শেষ পয়েন্ট) থেকে ভূত হিসাবে

/ * অন্তঃস্থল সাবকোয়ারি - উভয় দিকের প্রারম্ভ / সমাপ্তি বিন্দু জোড়গুলিতে বিল্ডিং বহুগুণগুলি পচানোর জন্য জেনারেট_সরিজ () ব্যবহার করুন - নোট 1 - সমস্ত বহুভুজ পক্ষের নোট 2 এর সাধারণ দিকনির্দেশকে নিশ্চিত করতে ডান-হাত-নিয়মকে জোর করুন নোট 2 - উদাহরণটি বহুগুণ জন্য জ্যামিত্রিনের জন্য () অপসারণ করা যেতে পারে * /

(জেনারেট_সরিজগুলি নির্বাচন করুন (1, এনপয়েন্টস (বহির্মুখী (জ্যামিত্রিন (স্টিফোর্সআরএইচআর (জিওম), 1))) - 1) লাইন_আইডি হিসাবে, বিলিডজি 2009 গ্রিড হিসাবে চিহ্নিত, পয়েন্টন (বহির্মুখী (জ্যামিত্রিএন (st_forRHR (জিওম), 1))), জেনারেট_সারিজ (1, npPoint (বহির্মুখী (জ্যামিত্রিন (st_forRHR (জিম), 1))) - 1%) স্টার্টপয়েন্ট, পয়েন্টন (বহির্মুখী (জ্যামিত্রিন (st_forRHR (ভূত), 1)), জেনারেট_সেসরিজ (2, npPoint (বহির্মুখী (জ্যামিত্রিন (st_forRHR (জ্যাম) ), 1)))))) বিডিজি 11116262 থেকে শেষ পয়েন্ট হিসাবে) টি 1 হিসাবে) টি 2 হিসাবে

- === QUERY সমাপ্তি ===

- bldg117862 সারণী বিবৃতি তৈরি / সন্নিবেশ করান

STANDARD_CONFORMING_STRINGS চালু করুন; ড্রপজিমিটারি কলাম নির্বাচন করুন ('', 'বিএলডিজি 117862', 'জিওম'); ড্রপ টেবিল "bldg117862"; শুরু; সারণী তৈরি করুন "bldg117862" (গিড সিরিয়াল প্রাইমারী কে, "মাদারপিন" বার্চার (14), "ট্যাক্সপিন" বর্ণার (14), "স্থিতি" বর্ণা (15), "অঞ্চল" সংখ্যাসূচক, "পূর্ব_আরিয়া" সংখ্যাসূচক, "পিটিটি_চেঞ্জ" সংখ্যা, "ছবি" বর্ণচর (১৩৩), "ম্যাপেজ" বার্চার ()), "শেরেফ_জিড" ইনট ৪, "ই_ড্রেস" বর্ণচর (১৯), "এ_এড্রেস" বর্ণচর (১৯), "পেরিম" সংখ্যাসূচক, "কার্ড" ইনট ৪, "এ_ড্ডনাম" int4, "e_street" বর্ণের (50), "a_street" বর্ণচর (50), "ই_হসনুম" বর্ণ (10%); অ্যাডজিওমিট্রি কলম নির্বাচন করুন ('', 'bldg117862', 'জিওম', '2271', 'মাল্টিপলিজোন', 2); 0106000020DF080000010000000103000020DF080000010000000B0000008C721D6C98AC34415E2C5BB9D3E32541AE56DE17BEAC34410613E5A0A0E325411AB6C794AEAC3441BA392FE372E32541C89C38429DAC3441643857628AE325418C299A9095AC3441F66C29B573E32541983F02087EAC34413080AA9F93E325419BAC3C0A86AC3441AC1F3B3DABE32541803A40B974AC3441E8CF3DB9C2E325413E3758C186AC3441D0AAB0E7F7E325410AAAA5429BAC3441BA971217DCE325418C721D6C98AC34415E2C5BB9D3E32541 '); ইন্ডেক্স তৈরি করুন "bldg117862_geom_gist" চালু "bldg117862" গিস্ট ব্যবহার করে ("জিওম" গিস্ট_জমেট্রি_পস); শেষ;


0

অনুমান করে যে রেখাগুলির ভাগগুলি বহুভুজের ক্ষেত্রে স্থির থাকে, আপনি প্রতিটি লাইন বিভাগের জন্য একটি ভেক্টরেরের লম্বকে বেয়ারিং (শিরোনাম) গণনা করতে পারেন। কোডটি বের করার জন্য আমার কাছে এখনই সময় নেই তবে আপনার যদি গণিতের প্রয়োজন হয় তবে এটি সহজে সরবরাহ করা যেতে পারে :-)

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