आर्कगिस डेस्कटॉप का उपयोग करके बिल्डिंग शैडो का निर्माण करना?


20

आप पदचिह्नों के निर्माण से छाया कैसे पैदा करेंगे?
मेरे पास इमारतों की ऊंचाइयों के लिए विशेषता मूल्य हैं।
तो छाया के आकार के आधार पर अलग-अलग होना पसंद करेंगे।
आर्कजीआईएस का उपयोग करके मैंने जो सबसे अच्छा सुझाव पाया है वह ड्रॉप शैडो है: http://blogs.esri.com/Support/blogs/mappingcenter/archive/2008/10/21/3d-effect-for-a-building-freeprints.aspx


2
समाधान के लिए ArcMap / पायथन कोड gis.stackexchange.com/questions/19935/… पर जारी रहता है
whuber

क्या आप पहले उदाहरण के लिए अजगर का उपयोग करके स्क्रिप्ट प्रदान कर सकते हैं क्योंकि मुझे कुछ छायांकन उपकरणों की छाया की पहचान करने की आवश्यकता है। आपकी प्रतिक्रिया को बहुत सराहा गया है

जवाबों:


23

एक त्वरित और गंदी विधि केवल भवन की छतों की छाया खींचने के लिए है, उन्हें गहरे भूरे रंग में प्रस्तुत करना (अधिमानतः अर्ध-पारदर्शी अगर कोई अंतर्निहित जमीन की परतें हैं), और उनके ऊपर इमारत बहुभुज बनाएं। छत की परछाइयों को बिल्डिंग पॉलीगनों द्वारा भवन की ऊँचाई द्वारा निर्धारित दिशाओं द्वारा अनुवाद करके प्राप्त किया जाता है, जो कि अज़ीमथ द्वारा स्थापित दिशा और प्रकाश स्रोत की ऊँचाई (असीम रूप से दूर माना जाता है) की ऊँचाई से होती है। (अनुवाद की राशि के लिए एक सूत्र नीचे दिखाई देता है।)

क्रूड शैडो

यह कम ऊंचाई या ऊंची इमारतों (जैसे गगनचुंबी इमारतों) को छोड़कर ठीक काम करने के लिए जाता है: देखें कि कैसे दाहिने हाथ की तरफ ऊंची इमारतों की छाया खुद इमारतों से अलग हो जाती है।

इमारतों से छाया को ठीक से जोड़ने के लिए , आपको भवन की दीवारों की छाया को शामिल करना होगा यह करना मुश्किल नहीं है। P पर स्थित बिंदु के बीच फैली हुई दीवार की छाया और Q पर स्थित एक अन्य बिंदु {P, Q, Q ', P'} द्वारा उल्लिखित चतुर्भुज होगा जहां Q 'Q और P' की छाया है। पी। एक बहुभुज निर्माण बिंदु के बंद अनुक्रमों (पी (1), पी (2), ..., पी (एन) से जुड़े पॉलीगोन का एक संग्रह होगा। ऐसे प्रत्येक बहुभुज के लिए, किनारों की छाया (P (1), P (2)), (P (2), P (3)), ..., (P (n), P () 1))। यह किनारों पर एक लूप के माध्यम से करने के लिए सीधा है।

एक डिग्री (उत्तर के पूर्व) और एस डिग्री (क्षितिज से) की ऊंचाई पर एक प्रकाश के लिए , अनुमानित निर्देशांक (x, y) और ऊंचाई h (सभी एक ही इकाइयों में व्यक्त ) के साथ एक बिंदु P की छाया। , जैसे कि मीटर) P '= (x - h sin (a) / tan (s), y - h cos (a) / tan (s)) पर स्थित है। आपको संपूर्ण परत के लिए केवल एक बार पाप (ए) / टैन (एस) और कॉस (ए) / टैन (एस) की गणना करनी होगी, और प्रत्येक बहुभुज के लिए आपको केवल एक बार ऑफसेट प्राप्त करने के लिए उन कारकों को ऊंचाई से गुणा करना होगा। बहुभुज में प्रत्येक बिंदु छाया। (वास्तविक कम्प्यूटेशनल कार्यभार जीआईएस द्वारा लिया गया है, न कि आपका कोड, क्योंकि यह इन सभी चतुर्भुजों के संघों का निर्माण करता है।)

यहाँ प्रभाव का एक उदाहरण है। (पहले आंकड़े की तुलना में अज़ीमुथ और ऊंचाई में थोड़ा बदलाव आया है, लेकिन इमारत बहुभुज और ऊँचाई - जो बदलती हैं - पहले जैसी ही हैं।)

अच्छी छाया

अनुबंध

एक अनुरोध के जवाब में, यहां दूसरा उदाहरण बनाने के लिए कोड का उपयोग किया गया है। यद्यपि लगभग कोई भी इस भाषा (एवेन्यू) का उपयोग नहीं करता है, यह आपके पसंदीदा जीआईएस में समाधान बनाने के लिए अच्छी तरह से स्यूडोकोड के रूप में काम कर सकता है। (अधिकांश स्यूडोकोड के विपरीत, हालांकि, वास्तव में इसे चलाने के द्वारा परीक्षण किया गया है। :-) यह इतना सरल है कि किसी स्पष्टीकरण की आवश्यकता नहीं होनी चाहिए; बस ध्यान रखें कि अनुक्रमण 0 से शुरू होता है, 1 से नहीं, और यह कि बहुभुज के छल्ले स्पष्ट रूप से बंद हैं (सूची में अंतिम बिंदु पहले बिंदु के साथ मेल खाता है)।

' 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
डोनट छेद वाली इमारतें इस एल्गोरिदम के साथ कैसे दिखती हैं? क्या यह एक गैर-छायांकित क्षेत्र के अस्तित्व के लिए अनुमति देता है, कहते हैं, एक आंगन, दी गई azimuth और ऊंचाई मान जो कि वास्तविक जीवन में कारण होगा?
blah238

2
@ बला हां। आप मेरे उदाहरणों में कुछ आंशिक आंगन देख सकते हैं, जैसे निचले बाएं कोने में इमारतों के समूह।
whuber

सहायता के लिए धन्यवाद। मैं अभी इसे उठा रहा हूं। इसे कैसे लागू किया जाए इसका कोई उदाहरण?
अठारहवीं

5
@ मैं इस काम को आर्कव्यू 3 में एक क्षेत्र गणना के साथ करने की बात कबूल करता हूं: यह सरल है, एक स्क्रिप्ट को आर्कप्स :-) शुरू करने की तुलना में तेजी से लिख सकता है, और यह लगभग बिल्कुल भी समय में निष्पादित नहीं होता है। यदि आप चाहें तो आउटपुट शेपफाइल को ArcMap द्वारा पढ़ा जा सकता है।
whuber

2
मैं आगे देख रहा हूँ कि पायथन लिपि में कोई व्यक्ति आर्केपा में इस काम को करने के लिए एक साथ रखता है!
रयानकेडल्टन-ऑफ दग्रिडैप्स

3

मुझे नहीं लगता कि आप जिस बारे में बात कर रहे हैं (ढूंढ रहे हैं) arcmap (संस्करण?) में एक कैपबिलिटी होने जा रही है,
यह प्रश्न देखें कि शायद जिस सीमा तक आप नहीं चाहते हैं। 3 डी विश्लेषक एक्सटेंशन और आर्सेकिन
का उपयोग करके आप प्रकाश जोड़ सकते हैं लेकिन अभी भी कुछ सीमाएं हैं। वहाँ के साथ इस मामले पर कुछ ESRI आंदोलन है cityengine । छाया सटीकता अनुभाग पर नीचे स्क्रॉल करें। मैं पहले लाइटस्केप से जुड़ा हुआ हूं (जो सेवानिवृत्त हो गया है और मुझे यकीन है कि 3dsmax के अंदर रहता है)। अब पथ शायद इंजीनियरिंग विज़ुअलाइज़ेशन उत्पाद लाइन के माध्यम से होगा ... 3ds मैक्स





मेरे विकल्पों की रूपरेखा के लिए धन्यवाद, ब्रैड। मैं आर्क 10 का उपयोग कर रहा हूं। मुझे नहीं लगता है कि मुझे जरूरी प्रकाश की आवश्यकता है, मुझे सिर्फ छाया के निशान के लिए 2 डी आकृतियों की आवश्यकता है, एक ड्रॉप छाया द्वारा उत्पादित परिणाम के बजाय भवन के कोनों से छाया आकार कनेक्ट करें।
अस्सीवें

मुझे गलत पढ़ना चाहिए। मैंने सोचा कि ऊँचाई पर छाया पाने के लिए आपको एक प्रकाश स्रोत द्वारा उत्पन्न की आवश्यकता होगी।
ब्रैड नेसोम

2
मुझे लगता है कि मैं इमारतों की ऊंचाई के लिए मेरे पास मौजूद विशेषता मूल्यों का उपयोग करके छाया के आकार को अलग-अलग कर सकता हूं? मेरी समस्या एक छाया बनाने में प्रतीत होती है जो एक ड्रॉप छाया नहीं है, लेकिन एक छाया जो वास्तव में भवन के पदचिह्न के कोनों से जुड़ी होती है।
अस्सीवें

1

3D विश्लेषक एक्सटेंशन में सिल्हूट और छाया संस्करणों के निर्माण के लिए कुछ उपकरण ( स्काईलाइन और स्काईलाइन बैरियर ) हैं, लेकिन यह एक ऊर्ध्वाधर विमान के खिलाफ एक क्षितिज के रूप में पेश किए जाने के संदर्भ में है, इसलिए मुझे यकीन नहीं है कि कैसे या अगर इसे आसानी से अनुकूलित किया जा सकता है इस मामले के लिए (एक क्षैतिज विमान, जमीन के खिलाफ पेश)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.