2009-08-26 12 views
6

मुझे एक इलाके का एक स्थलाकृति मानचित्र बनाने की आवश्यकता है जिसके लिए मेरे पास केवल (x,   y,   ऊंचाई) के डेटा के काफी स्पष्ट नमूने हैं। जाहिर है, मैं पूरी तरह से सटीक नक्शा नहीं बना सकता, लेकिन मुझे ऐसा लगता है जो कुछ "चिकनी" हो। मैं "चिकनाई" (शायद पारस्परिक सतह वक्रता के वर्ग की औसत) यों की जरूरत है और मैं एक उद्देश्य समारोह है कि दो मात्राओं का योग है कम करना चाहते हैं:स्पार्स नमूना डेटा से स्थलाकृतिक मानचित्र कैसे बनाएं?

  • सतह का खुरदरापन
  • उस बिंदु पर नमूना बिंदु पर सतह की ऊंचाई और वास्तविक मापा ऊंचाई के बीच मतलब वर्ग दूरी

क्या मैं वास्तव में चाहते हैं के बाद से एक स्थलाकृतिक नक्शा है, मैं वास्तव में एक तरह से समोच्च पंक्तियों के निर्माण के लिए देख रहा हूँ निरंतर ऊंचाई का, और कभी भी बात करने के बिना ऐसा करने के लिए कुछ चालाक ज्यामितीय तरीका हो सकता है सतहों के बारे में। बेशक मैं समोच्च रेखाओं को चिकना होना चाहता हूं।

कोई भी और सभी सुझाव आपका स्वागत है। मुझे उम्मीद है कि यह एक प्रसिद्ध संख्यात्मक समस्या है। मैं सी में काफी आरामदायक हूं और फोरट्रान का कामकाजी ज्ञान है। Matlab और आर के बारे में मैं काफी अनजान हूँ। हम योजना बना रहे मोटे तौर पर भी रिक्ति है, लेकिन हम अधिक नमूने ले जाएंगे जहां स्थलाकृति अधिक दिलचस्प है:


जहां हमारे नमूने स्थित हैं के बारे में

। तो उदाहरण के लिए हम एक सादे से अधिक घनी पहाड़ी क्षेत्रों का नमूना लेंगे। लेकिन हमारे पास नमूनाकरण के बारे में निश्चित रूप से कुछ विकल्प हैं, और यदि यह मामलों को सरल बनाता है तो नमूने भी ले सकते हैं। केवल मुद्दों

  • हैं हम नहीं जानते कितना इलाके हम क्रम में मैप करने के लिए सुविधाओं है कि हम के लिए देख रहे हैं खोजने के लिए की आवश्यकता होगी।

  • नमूना लेना 10 मिनट के आदेश पर मामूली महंगा है। इसलिए 100x100 ग्रिड का नमूना लेने में काफी समय लग सकता है।

+0

क्या आपके नमूने समान रूप से दूरी पर हैं, या यादृच्छिक हैं? –

+0

मार्क: हम उन्हें कहीं भी रख सकते हैं जहां हम चाहते हैं। मैंने ऊपर एक नोट जोड़ा है। –

उत्तर

2

contouring algorithm के उत्कृष्ट समीक्षा, आप सतह जाल करने के लिए पहले एक ग्रिड पर अंतर्वेशन की जरूरत हो सकती।

+0

भयानक लग रहा है; धन्यवाद –

+0

लिंक टूटा हुआ है। –

+0

अब टूटा नहीं है, लेकिन मुझे लगता है कि यह वास्तव में सवाल का जवाब नहीं है। ऐसा प्रतीत होता है कि इस बाहरी संसाधन को एक कार्य करने की आवश्यकता है और उस कार्य से यह एक समोच्च मानचित्र तैयार करेगा। –

1

हो सकता है आप उपयोग कर सकते हैं:

साथ

in R

+0

थोड़ा सा स्कैटरशॉट सहायक होने के लिए, मुझे डर है। GEOMap उपयोगी हो सकता है लेकिन दस्तावेज़ इतना जटिल है कि मैं नहीं बता सकता। जनरेटिव टॉपोग्राफिक मानचित्र http://en.wikipedia.org/wiki/Generative_topographic_map अधिक आशाजनक दिखता है। –

+0

@ नॉर्मन रैमसे यह हमेशा आर में एक साहसिक है :) – pageman

+0

असल में यही है कि gtm है - जेनरेटिव टॉपोग्राफिक मैपिंग - http://cran.r-project.org/web/packages/gtm/gtm.pdf – pageman

3

Kriging interpolation आसानी से अपने विरल नमूने interpolating के लिए कुछ काम का हो सकता है।

+0

वास्तव में उपयोगी लगता है, धन्यवाद ! –

3

आर में कई अलग-अलग प्रासंगिक उपकरण हैं। विशेष रूप से, at the spatial view देखें। एक समान प्रश्न was asked in R-Help before, so you may want to look at that

contour फ़ंक्शंस को देखें। "यह अक्सर डेटा के लिए एक चिकनी सतह फिट एक पर है कि सतह का मूल्यांकन करने के लिए बेहतर काम करता है:

contour(x,y,z, lty=1) 

विधेयक डनलप एक सुधार का सुझाव दिया:

x <- seq(-3,3) 
y <- seq(-3,3) 

z <- outer(x,y, function(x,y,...) x^2 + y^2) 

एक प्रारंभिक साजिश कुछ हद तक किसी न किसी तरह है: यहाँ कुछ डेटा है बेहतर ग्रिड, और परिणाम को समोच्च रूप से पास करें। यह सुनिश्चित करता है कि समोच्च रेखाएं एक-दूसरे को पार नहीं करतीं और नकली लूप से बचने के लिए होती हैं जो आपको समोच्च रेखाओं को चिकनाई से प्राप्त कर सकती हैं। पतली प्लेट splines (पुस्तकालय से टीपीएस ("फ़ील्ड")) और नींद (दूसरों के बीच) सतह फिट कर सकते हैं। "

library("fields") 
contour(predict.surface(Tps(as.matrix(expand.grid(x=x,y=y)),as.vector(z)))) 

यह एक बहुत चिकनी साजिश में परिणाम है, क्योंकि यह Tps() का उपयोग करता है पहली डेटा फिट करने के लिए, तो contour कहता है। यह (यदि आप चाहते हैं कि उसे छायांकित किया जाना है तो आप भी filled.contour उपयोग कर सकते हैं) इस तरह लग रही समाप्त होता है:

भूखंड के लिए, आप lattice (ऊपर के उदाहरण के रूप में) का उपयोग कर सकते या ggplot2 पैकेज। उस मामले में geom_contour() फ़ंक्शन का उपयोग करें। एक उदाहरण can be found here (ht Thierry):

ds <- matrix(rnorm(100), nrow = 10) 
library(reshape) 
molten <- melt(data = ds) 
library(ggplot2) 
ggplot(molten, aes(x = X1, y = X2, z = value)) + geom_contour() 
संबंधित मुद्दे