यादृच्छिक लेकिन विश्वसनीय डिजिटल उन्नयन मॉडल बनाना? [बन्द है]


32

प्रोग्राम या अन्यथा, डीईएम उत्पन्न करने का एक तरीका है, जो आगे के स्थानिक विश्लेषण के लिए आर्कगिस डेस्कटॉप में फीड करेगा?

शायद इसे छोटे वृद्धिशील चरणों में विभाजित करने की आवश्यकता है:

  1. एक ग्रिड बनाएं
  2. मान के साथ ग्रिड भरें: 0 > value < maxElevation
  3. पड़ोसी कोशिकाएं: (x1-x2) < maxSlope

4
साइट @Igor आपको इस प्रश्न को स्पष्ट करने की आवश्यकता का सुझाव देती है। यह "सिंथेटिक इलाकों" पर केंद्रित है, जाहिरा तौर पर गेम और इस तरह की पृष्ठभूमि बनाने के लिए। उन तकनीकों में से अधिकांश वास्तविक डीईएम को फिर से बनाने पर ध्यान केंद्रित करने के लिए दिखाई नहीं देते हैं : "यथार्थवादी" किसी भी वैज्ञानिक सामग्री के बजाय देखने वाले की आंखों में है। आपके प्रश्न में, "आगे स्थानिक विश्लेषण" से पता चलता है कि आपको वास्तविक डीईएम के कुछ वर्ग की कुछ विशेषताओं को पुन: पेश करने के लिए अपने सिंथेटिक डीईएम की आवश्यकता है। यदि ऐसा है, तो बस आपको किन विशेषताओं को पकड़ने की आवश्यकता है?
whuber

@Aragon से पहला लिंक टूट गया है, लेकिन इसे इस ओर इशारा करना चाहिए । उसके जवाब पर टिप्पणी करने के लिए पर्याप्त क्रेडिट नहीं।
Matthieu

इस पर भी गौर करें
रॉड्रिगो

जवाबों:


6

कुछ अच्छी जानकारी के लिए इस पृष्ठ को आज़माएँ या पढ़ें। और दूसरा लिंक आपको यादृच्छिक डिजिटल एलिवेटिन मॉडल का रास्ता दिखाता है।

  1. संख्यात्मक और वैज्ञानिक पायथन और डेटा विज़ुअलाइज़ेशन
  2. ऊँचाई / ऊँचाई का क्षेत्र गदल सुन्न अजगर बनाना

16

आप इसके लिए भग्न का उपयोग कर सकते हैं फ्रैक्चर के साथ बनाई गई कृत्रिम डेम:।

ऊपरी पंक्ति को फ्रैक्टल डायमेंशन d = 2.0005 (लेफ्ट: एलीवेशन मैप, राइट: एस्पेक्ट मैप) के साथ उत्पन्न किया गया था, फ्रैक्टल डायमेंशन d = 2.90 (लेफ्ट: एलीवेशन मैप, राइट: एस्पेक्ट मैप) के साथ निचली पंक्ति। मैंने GRASS GIS का r.surf.fractal इस्तेमाल किया । फिर बस कृत्रिम डीईएम को r.out.gdal (या GUI) के साथ GeoTIFF में निर्यात करें।


यह वास्तव में दिलचस्प लग रहा है - क्या आप कुछ बारीकियों को जोड़ सकते हैं कि आप कैसे उपयोग करते हैं r.surf.fractal?
सिमबामुंगु

आप यहाँ ऊपर चित्रों के लिए उपयोग की गई कमांड पा सकते हैं: grass.osgeo.org/grass70/manuals/r.surf.fractal.html#example
markusN

8

आप ऐसी स्क्रिप्ट पर भी विचार कर सकते हैं जो मौजूदा वास्तविक डेम का यादृच्छिक हिस्सा लेती है।


इसके अलावा, यह यादृच्छिक भागों के उन मोज़ेक किनारों को nivelate करने के लिए अंत में किसी प्रकार की फिलरिंग की आवश्यकता होगी ..
najuste


5

एक यादृच्छिक रेखापुंज में आटोक्लेररेशन को जोड़ने के लिए एक गाऊसी कर्नेल का उपयोग करके एक आर समाधान है। हालाँकि, मेरा कहना है कि @markusN द्वारा सुझाए गए GRASS r.surf.fractal फ़ंक्शन, सबसे अच्छा तरीका है।

require(raster)

# Create 100x100 random raster with a Z range of 500-1500
r <- raster(ncols=100, nrows=100, xmn=0)
  r[] <- runif(ncell(r), min=500, max=1500)  

# Gaussian Kernel Function
GaussianKernel <- function(sigma=s, n=d) {
          m <- matrix(nc=n, nr=n)
            col <- rep(1:n, n)
            row <- rep(1:n, each=n)
          x <- col - ceiling(n/2)
          y <- row - ceiling(n/2)
         m[cbind(row, col)] <- 1/(2*pi*sigma^2) * exp(-(x^2+y^2)/(2*sigma^2))
        m / sum(m)
       }

# Create autocorrelated raster using 9x9 Gaussian Kernel with a sigma of 1
r.sim <- focal(r, w=GaussianKernel(sigma=1, n=9))

# Plot results
par(mfcol=c(1,2))
  plot(r, main="Random Raster")
  plot(r.sim, main="Autocorrelated Random Raster sigma=1, n=9")

4

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


3

कामवासना तुम्हें वही देती है जो तुम चाहते हो। आपको कुछ हद तक इसे अनुकूलित करना होगा। 'जटिल ग्रहीय सतह' उदाहरण देखें।

कामेच्छा एक पोर्टेबल सी ++ लाइब्रेरी है जिसका उपयोग सुसंगत शोर, सुचारू रूप से बदलते शोर का एक प्रकार उत्पन्न करने के लिए किया जाता है। कामेच्छा Perlin शोर, बहुपक्षीय शोर, और सुसंगत-शोर के अन्य प्रकार उत्पन्न कर सकते हैं।

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

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


3

इस कोड का उपयोग किसी भी संख्या में पंक्तियों और स्तंभों के बारे में "हिल ढलान" डेम बनाने के लिए किया जा सकता है:

# Building a fake hillslope
# hisllop is 5 rows by 6 columns

x <- seq(-15, 15, by=0.01)
z <- 1/(1+1.5^-x)
plot(z)

z <- 150 - (1-z)*5
plot(z)

# Doing it by hand - DELETE if needed - JUST HERE AS AN EXAMPLE!!!
elev <- c(mean(z[0:500]), mean(z[501:1000]), mean(z[1001:1500]), mean(z[1501:2000]), mean(z[2001:2500]),mean(z[2501:3000]))
plot(elev, type="l")


# doing it by loop
bins <- 6      # could also be considered the length or the hillslope - AKa the number of columns
elev1 <- numeric(bins)


for(i in 0:(bins-1))
{
  begin <- floor( (0 + (length(z)/bins)*i) )
  print(begin)
  end <- floor( ( (length(z)/bins) * (i+1) ) )
  print(end)
  print(mean(z[begin:end]))
  elev1[i+1] <- mean(z[begin:end])  

}

plot(elev1, type="l")


# Making the hillslope wide - AKA creating identical rows
width <- 5

# creating empty matric
hillslope <- matrix(0, nrow=bins, ncol=width)

#overwriting the matrix with the elevation column
system.time(
  { 
    for(i in 1:width) 
      hillslope[,i] <- elev1; 
    hillslope <- as.data.frame(hillslope) 
    }
  )



# applying random error grid
error <- rnorm((width*bins), mean = 0, sd = 0.25)
error.matrix <- as.matrix(error, nrow=bins )



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