আর্কজিআইএস ডেস্কটপ ব্যবহার করে বিল্ডিং ছায়া তৈরি করছেন?


20

আপনি কীভাবে বাড়ির ছাপগুলি তৈরির ছায়া তৈরি করবেন?
আমার কাছে বিল্ডিংয়ের উচ্চতার জন্য বৈশিষ্ট্যযুক্ত মান রয়েছে।
সুতরাং ছায়া'র আকারগুলি এর ভিত্তিতে পরিবর্তিত হওয়া পছন্দ করবে।
আরকিজিআইএস ব্যবহার করে আমি যে সেরা পরামর্শটি পেয়েছি তা হ'ল ড্রপ ছায়া: http://blogs.esri.com/Support/blogs/mappingcenter/archive/2008/10/21/3d-effect- for-a- building-footprints.aspx


2
একটি সমাধানের জন্য আর্কম্যাপ / পাইথন কোডটি ধারাবাহিকতায় gis.stackexchange.com/questions/19935/… সরবরাহ করা হয়
হোবার

আপনি কি দয়া করে প্রথম উদাহরণটির জন্য পাইথন ব্যবহার করে স্ক্রিপ্টটি সরবরাহ করতে পারেন কারণ আমাকে কিছু শেডিং ডিভাইসের ছায়া সনাক্ত করতে হবে। আপনার প্রতিক্রিয়া অত্যন্ত প্রশংসা করা হয়েছে

উত্তর:


23

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

অপরিশোধিত ছায়া

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

ছায়াগুলিগুলিকে বিল্ডিংয়ের সাথে সঠিকভাবে সংযুক্ত করতে , আপনাকে বিল্ডিং দেয়ালের ছায়াগুলি অন্তর্ভুক্ত করতে হবে এটি করা কঠিন নয়। পিতে অবস্থিত একটি বিন্দু এবং কিউতে অবস্থিত অন্য একটি বিন্দুর মধ্যে প্রসারিত প্রাচীরের ছায়াটি {P, Q, Q ', P'} যেখানে Q 'Q এবং P এর ছায়া দ্বারা বর্ণিত চতুর্ভুজ হবে? পি। একটি বহুভুজ ভবনটি সংযুক্ত বহুভুজগুলির একটি সংকলন হবে যা পয়েন্টের বদ্ধ ক্রমগুলি দ্বারা প্রতিনিধিত্ব করে (পি (1), পি (2), ..., পি (এন))। এই জাতীয় প্রতিটি বহুভুজের জন্য প্রান্তের ছায়ার (পি (1), পি (2)), (পি (2), পি (3)), ..., (পি (এন), পি ( 1))। প্রান্তগুলির উপর একটি লুপের মাধ্যমে এটি করা সহজ।

একটি ডিগ্রি (উত্তর পূর্ব) এবং একটি ডিগ্রি উচ্চতা (দিগন্ত থেকে) এর একটি আলোর জন্য , প্রক্ষেপণ স্থানাঙ্ক (x, y) এবং উচ্চতা h (সমস্ত একই ইউনিটে প্রকাশিত ) সহ একটি পয়েন্ট P এর ছায়া , যেমন মিটার) পি '= (x - h পাপ (ক) / ট্যান (গুলি), ওয়াই-হ কোস (ক) / ট্যান (গুলি) এ অবস্থিত। পুরো স্তরটির জন্য আপনাকে কেবল একবার পাপ (ক) / ট্যান (গুলি) এবং কোস (ক) / ট্যান (গুলি) গণনা করতে হবে এবং প্রতিটি বহুভুজ জন্য আপনাকে অফসেটগুলি পেতে একবার কেবল সেই উপাদানগুলিকে উচ্চতা দিয়ে গুণ করতে হবে for বহুভুজ মধ্যে প্রতিটি পয়েন্ট ছায়া। (আসল গণনার কাজের চাপ জিআইএস দ্বারা পরিচালিত হয়, আপনার কোড নয়, কারণ এটি এই সমস্ত চতুর্ভুজগুলির ইউনিয়ন গঠন করে))

এখানে প্রভাব উদাহরণ। (প্রথম চিত্রের তুলনায় আজিমুথ এবং উচ্চতা কিছুটা বদলেছে, তবে বিল্ডিং বহুভুজ এবং উচ্চতা - যা পৃথক - পূর্বের মতোই))

ভাল ছায়া

উপাঙ্গ

একটি অনুরোধের প্রতিক্রিয়া হিসাবে, এখানে দ্বিতীয় উদাহরণ তৈরি করতে ব্যবহৃত কোডটি রয়েছে। যদিও প্রায় কেউই এই ভাষা (অ্যাভিনিউ) আর ব্যবহার করে না, এটি আপনার প্রিয় জিআইএসে সমাধান তৈরি করার জন্য সিউডোকোড হিসাবে ভাল ব্যবহার করতে পারে। (তবে বেশিরভাগ সিউডোকোডের বিপরীতে এটি আসলে চালিয়ে পরীক্ষা করা হয়েছে। :-) এটি এতই সহজ যে কোনও ব্যাখ্যা প্রয়োজন হবে না; কেবল সচেতন থাকুন যে সূচকটি 1 দিয়ে নয়, 0 দিয়ে শুরু হয় এবং বহুভুটির রিংগুলি স্পষ্টভাবে বন্ধ হয়ে যায় (তালিকার শেষ পয়েন্টটি প্রথম পয়েন্টের সাথে মিলে যায়)।

' S
' Return the shadow of a shape.

' Field calculator example:
' av.run("S", {[shape], [height], 200, 35})
'======================================================================'
theShape = SELF.Get(0) ' A projected polygon
xHeight = SELF.Get(1)  ' Expressed in the projected units
xAzimuth = SELF.Get(2).AsRadians  ' Any angle (in degrees) east of north
xAltitude = SELF.Get(3).AsRadians ' Angle between 0 and 90 (vertical)
'
' Compute the shadow offsets.
'
xSpread = 1/xAltitude.Tan
x = -xHeight * xSpread * xAzimuth.Sin
y = -xHeight * xSpread * xAzimuth.Cos
xy = x@y
'
' Begin with the original shape.
'
p = theShape.Clone
'
' Adjoin the wall shadows.
'
for each lPts in theShape.AsList   ' Loop over the rings
  for each i in 1..(lPts.Count-1)  ' Loop over edges in this ring
    l = {lPts.Get(i-1), lPts.Get(i), lPts.Get(i)+xy, lPts.Get(i-1)+xy}
    p = p.ReturnUnion(Polygon.Make({l}))
  end
end
return p
' end of script

1
ডোনাট গর্তযুক্ত বিল্ডিংগুলি এই অ্যালগরিদমের সাথে কীভাবে দেখায়? এটি কি একটি ছায়াবিহীন অঞ্চলকে অজমূথ এবং উচ্চতা মানের দেওয়া আঙ্গিনের মধ্যে থাকার অনুমতি দেয় যা বাস্তব জীবনে এটির কারণ হতে পারে?
blah238

2
@ ব্লাহ হ্যাঁ আপনি আমার উদাহরণগুলিতে কিছু আংশিক উঠোন দেখতে পাচ্ছেন, যেমন নীচের বাম কোণে বিল্ডিংয়ের দলগুলি।
হোবার

সাহায্যের জন্য ধন্যবাদ. আমি এখনই এটি বাছাই করছি। এটি বাস্তবায়নের কোনও উদাহরণ?
এশিটিউইন্টি

5
@ আশিটি আমি আর্কভিউ 3-তে একটি ক্ষেত্র গণনা করে এই কাজটি করার স্বীকার করছি: এটি সহজ, কেউ স্ক্রিপ্টটি আর্কম্যাপ :-) আরম্ভ করার চেয়ে দ্রুতগতিতে লিখতে পারে এবং এটি প্রায় কোনও সময়েই কার্যকর হয় না। আউটপুট শেফফাইলটি যদি আপনার পছন্দ হয় তবে রেন্ডারিংয়ের জন্য আর্কম্যাপ দ্বারা পড়তে পারেন।
হোবার

2
আর্কম্যাপে এই কাজটি করার জন্য পাইথন স্ক্রিপ্টটি দেখার জন্য কেউ অপেক্ষা করছে!
রায়ানকেডাল্টন-অফগ্রিড গ্রিডম্যাপস

3

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





ব্র্যাড, আমার বিকল্পগুলির রূপরেখার জন্য ধন্যবাদ। আমি আরক ১০ ব্যবহার করছি I আমি মনে করি না যে অগত্যা আমার আলোর দরকার, ছায়া পদচিহ্নের জন্য আমার কেবলমাত্র 2 ডি আকারের প্রয়োজন ছায়া আকৃতির একটি ছোঁয়া ছায়া দ্বারা উত্পাদিত ফলাফলের পরিবর্তে বিল্ডিংয়ের কোণ থেকে connect
এটিটিউয়েন্টিটি

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

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

1

3D অ্যানালিস্ট এক্সটেনশনের সিলুয়েট এবং ছায়া ভলিউম উত্পাদন করার জন্য কিছু সরঞ্জাম ( স্কাইলাইন এবং স্কাইলাইন ব্যারিয়ার ) রয়েছে তবে এটি আকাশের লাইনের মতো একটি উল্লম্ব বিমানের বিপরীতে অনুমান করা প্রসঙ্গে, সুতরাং আমি কীভাবে বা কীভাবে এটি সহজেই রূপান্তর করা যায় তা আমি নিশ্চিত নই এই ক্ষেত্রে (একটি অনুভূমিক বিমান, স্থল বিরুদ্ধে বিস্তৃত)।

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