आर्कगिस डेस्कटॉप का उपयोग करके एलीवेशन के बाद बफर बहुभुज बनाना?


14

मैं जो करना चाह रहा हूं उसे एक बहुभुज पर 100 मीटर बफर लगाया जाता है, लेकिन बफर एक निश्चित चौड़ाई पर होने के बजाय "कौवा उड़ता है" मैं चाहता हूं कि यह मेरे लिडार डेम की ढलानों का पालन करे।

मेरे पास ArcMap (3D विश्लेषक के साथ) है। दुख की बात है कि ArcMap के साथ कोई स्थानिक या नेटवर्क विश्लेषक एक्सटेंशन नहीं है।

मुझे इंटरनेट पर निकटता विश्लेषण, पथ दूरी विश्लेषण और अनीसोट्रोपिक संचयी लागत की तलाश में सभी तरह की बारी आती है। ऐसा लगता है कि मुझे किसी तरह से एक समय-लागत ग्रिड बनाने की आवश्यकता है और यह पता लगाना है कि बहुभुज से 100 मीटर तक पहुंचने में कितना समय लगेगा, लेकिन ऐसा लगता है कि पिछड़ा हुआ है। इनमें से अधिकांश उपकरण दो बिंदुओं के बीच सबसे आसान मार्ग खोजने के लिए बनाए गए हैं।

क्या किसी ने इसे पहले किया है?


1
जब आप कहते हैं कि आप "ढलानों का पालन करना चाहते हैं", तो क्या आपका मतलब है कि यदि कोई डेम सेल 1 मीटर के पार है, तो आप अपने बफर में 1 मीटर के बराबर हैं, लेकिन अगर एक तरफ दूसरे से 1 मीटर ऊंचा है, तो आप गिनती करेंगे गिनती होगी कि 1.41 मीटर (सतह के साथ दूरी) के रूप में?
डैन सी

वास्तव में, इस मामले में हमें एक वेटलैंड से 100 मीटर दूर दिखाने की आवश्यकता है, और इसके ठीक बगल में एक रिज है। मुझे लगता है कि मैं QGIS के रेखापुंज कैलकुलेटर का उपयोग करने के लिए ढलान प्रतिशत को रेखापुंज के सेल आकार के आधार पर मीटर में परिवर्तित कर सकता हूं। मैं नहीं जानता कि 100 पिक्सेल तक मैन्युअल रूप से प्रत्येक पिक्सेल की जांच के बिना उन को कैसे जोड़ा जाए, लेकिन हाँ, मैं वास्तव में यही बात कर रहा हूं।
आर। लेयर्ड

जवाबों:


7

स्थानिक विश्लेषक की अनुपस्थिति में आपके द्वारा वर्णित के लिए वर्कअराउंड:

arcpy.Buffer_analysis("target","../buffer.shp", "100 Meters")
arcpy.FeatureVerticesToPoints_management("buffer","../points.shp","ALL")
arcpy.AddField_management("points", "PID", "LONG")
arcpy.CalculateField_management("points", "PID", "[FID]")
arcpy.Near_analysis("points", "target","LOCATION")
arcpy.MakeXYEventLayer_management("points","NEAR_X","NEAR_Y","points_Layer")
arcpy.CopyFeatures_management("points_Layer","../from_points.shp")
arcpy.Merge_management("from_points;points","../pairs.shp")
arcpy.PointsToLine_management("pairs","../lines_2D.shp", "PID")
arcpy.InterpolateShape_3d("DEM","lines_2D","../lines_3D.shp")
arcpy.AddField_management("lines_3D", "XY", "TEXT")

इसे नए फ़ील्ड पर चलाएँ (05/02/2018 को निर्धारित):

def getPoint(shp):
 part=shp.getPart(0)
 n=len(part);L=0
 for i in xrange(n):
  p=part.getObject(i)
  x=p.X;y=p.Y;z=p.Z
  if i >0:
    dX=X-x;dY=Y-y;dZ=Z-z;dL=pow((dX*dX+dY*dY+dZ*dZ),0.5);L+=dL
  if L>=100: break
  X,Y,Z=x,y,z 
 xNew=x+dX/dL*(L-100);yNew=y+dY/dL*(L-100)
 return '%s %s' %(xNew,yNew)
#-----------------
getPoint( !Shape!)

X और Y फ़ील्ड को लाइनों_3D में जोड़ें और उनका उपयोग करके पॉपुलेट करें:

!XY!.split(" ")[0] and !XY!.split(" ")[1]

2 क्षेत्रों के ऊपर से XY लेयर बनाएं, इसे अंक वर्ग में कॉपी करें और मूल के अंदर बफर लाइन बनाने के लिए पॉइंट टू लाइन का उपयोग करें:

उत्पादन:

यहाँ छवि विवरण दर्ज करें

निष्कर्ष:

जब तक आपका इलाक़ा बेहद खड़ी साधारण बफर काम नहीं करेगा, जब तक कि बहुत संभावना नहीं लगती कि आप वास्तव में प्रवाह की लंबाई के बारे में बात कर रहे हैं। बुरी किस्मत, क्योंकि इसके लिए आपको स्थानिक विश्लेषक से हाइड्रोलॉजिकल विश्लेषण टूलबॉक्स की आवश्यकता होती है

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