ภาษาการเขียนโปรแกรมที่แนะนำสำหรับการสำรวจระยะไกล?


14

ฉันเริ่มการศึกษาที่หวังว่าจะนำไปสู่อาชีพที่ยาวนานในฐานะผู้เชี่ยวชาญด้านการรับรู้ระยะไกล ขณะนี้ฉันกำลังทำงานกับ ArcGIS สำหรับบางแอปพลิเคชันและเรียนรู้ ENVI สำหรับผู้อื่น ฉันได้ตระหนักว่ามีความจำเป็นที่ฉันต้องเรียนรู้ภาษาการเขียนโปรแกรมและติดอยู่กับการเลือกระหว่าง IDL และ Python ฉันชอบที่จะได้ยินภาษาการเขียนโปรแกรมที่ชุมชนแนะนำสำหรับการสำรวจระยะไกลของกระบวนการพื้นผิว

คำตอบ:


28

IDL เป็นภาษาโปรแกรมเดี่ยวที่ยอดเยี่ยม (คุณไม่จำเป็นต้องใช้ ENVI) ฉันชอบมันสำหรับการประมวลผลเมทริกซ์ที่รวดเร็วมากในอาร์เรย์ขนาดใหญ่ @Aaron ทำให้เสียง IDL มีความยืดหยุ่นน้อยลง การพัฒนา IDL ส่วนใหญ่มาจากชุมชนฟิสิกส์และดาราศาสตร์ มีการสนับสนุนที่แข็งแกร่งสำหรับการเขียนโปรแกรมทางคณิตศาสตร์และสถิติ หากรวมกับ ENVI คุณจะสามารถเรียกใช้ไลบรารี (ฟังก์ชั่น) ทั้งหมดใน ENVI รวมถึงการสนับสนุนวัตถุเชิงพื้นที่เวกเตอร์ นอกจากนี้ยังมีฟังก์ชั่นและแบบจำลองจำนวนมากที่พัฒนาโดยชุมชนผู้ใช้ ข้อดีอย่างหนึ่งของการเรียนรู้ IDL ก็คือจะทำให้คุณสามารถทำการตลาดในร้านค้า "การวิเคราะห์" การสำรวจระยะไกล

นอกจากนี้อย่าลืมว่า ERDAS มีภาษาสคริปต์ (EML) ที่ค่อนข้างดีและเรียนรู้ได้ง่าย EML เป็นกระดูกสันหลังของผู้สร้างแบบจำลองกราฟฟิคและ gmd เป็นเพียงชุดสคริปต์ EML ที่อยู่ภายใต้ส่วนต่อประสานกราฟิกโมเดล ข้อได้เปรียบของการใช้ EML โดยตรงคือคุณสามารถใช้สำหรับ / ในขณะที่ลูปและมีการเข้าถึงฟังก์ชั่น ERDAS เพิ่มเติมในภาษาสคริปต์

MATLAB นั้นดีมากสำหรับการประมวลผลเมทริกซ์และมีรุ่นโอเพ่นซอร์ส (เช่น Octave) ที่มีไวยากรณ์เดียวกันกับการทดสอบมาตรฐานที่คล้ายกัน นี่เป็นภาษาที่มีความยืดหยุ่นสูงและมีกำลังมาก มันเป็นหนึ่งในภาษาที่ต้องการสำหรับคณิตศาสตร์ประยุกต์และวิศวกรรม

ทางเลือกของ Python NumPy และ SciPy นั้นมีความยืดหยุ่น แต่ไม่ได้รับการปรับให้เหมาะกับ IDL และ MATLAB คุณจำเป็นต้องจัดการกับพื้นที่ที่อยู่และความเร็วเมื่อทำงานกับอาร์เรย์ขนาดใหญ่ ข้อดีอย่างหนึ่งของ Python ก็คือไลบรารี่เพิ่มเติมสำหรับการปฏิบัติงานวิเคราะห์ที่หลากหลาย มีแพ็กเกจสำหรับการมีความรู้จากระยะไกล , สถิติไม่อิงพารามิเตอร์ผูกเรียนเชิงพื้นที่ (เช่น GDAL, LibLAS) เพื่อชื่อเพียงบางส่วนของการเพิ่มฟังก์ชันใช้ได้ผ่านแพคเกจ

นี่นำเรามาสู่อาร์ฉันเป็นนักสถิติเชิงพื้นที่ดังนั้นนี่คือภาษาประจำวันของฉัน จำนวนแพคเกจที่มีอยู่นั้นน่าประหลาดซึ่งในทางกลับกันก็ให้การเข้าถึงวิธีการทางสถิติที่ทันสมัย อย่างไรก็ตามฉันต้องบอกว่ามันยุ่งยากมากเมื่อจัดการกับปัญหาข้อมูลขนาดใหญ่ คลาสอวกาศเริ่มดีขึ้นมากและเนื่องจากแพ็คเกจแรสเตอร์ที่ให้ความสามารถในการเก็บข้อมูลขนาดใหญ่ออกจากหน่วยความจำตอนนี้ฉันสามารถนำแบบจำลองทางสถิติที่ซับซ้อนบางตัวมาใช้อาร์เรย์แรสเตอร์ขนาดใหญ่ แต่ยังคง R ช้าเมื่อจัดการกับปัญหาหน่วยความจำขนาดใหญ่ แพคเกจ BigMatrix ช่วยให้การเขียนและการประมวลผลอาร์เรย์ขนาดใหญ่จากดิสก์ แต่ค่าใช้จ่ายการเข้ารหัสไม่สำคัญไม่มีนอกจากนี้ยังมีการผูกกับซอฟต์แวร์ GDAL และ GIS (เช่น GRASS, SAGA) ที่อนุญาตให้การประมวลผลเชิงพื้นที่เกิดขึ้นนอก R ในซอฟต์แวร์เฉพาะ GIS ซึ่งเป็นวิธีที่ฉันโต้ตอบกับซอฟต์แวร์ GIS ในปัจจุบัน สิ่งนี้ทำให้ฉันสามารถใช้ประโยชน์จากฟังก์ชั่นของซอฟต์แวร์หลาย ๆ ตัวได้โดยไม่ต้องออกจาก R

ดังนั้นตอนนี้การเชียร์ลีดเดอร์ของซอฟต์แวร์ก็ไม่เป็นไปตามที่คาดไว้คำแนะนำของฉันคือ "ใช่กับตัวเลือกทั้งหมดข้างต้น" การเขียนโปรแกรมเป็นทักษะที่เมื่อเรียนรู้แล้วสามารถนำไปใช้กับภาษาอื่นได้อย่างง่ายดาย มีความคล้ายคลึงกันระหว่าง C ++, R, IDL และ Python นอกเหนือจากการเข้ารหัสนิสัยบางอย่างแล้วสิ่งที่เราต้องเรียนรู้ก็คือฟังก์ชั่นที่มีให้ใช้ในการสร้างแบบจำลอง / งานที่กำหนด เมื่อเสร็จแล้วมันเป็นเพียงเรื่องของไวยากรณ์ที่ใช้โครงสร้างการเข้ารหัสทั่วไป

บางครั้งมีสิ่งต่าง ๆ ที่ทำงานได้ดีขึ้นในซอฟต์แวร์หรือภาษาอื่น ฉันเขียนโค้ดเป็นครั้งคราวใน FORTRAN หรือ C ++ เพราะเป็นเพียงตัวเลือกที่ดีที่สุดสำหรับงานที่กำหนด มันเป็นเรื่องของการปรับตัว คุณอาจต้องการเริ่มต้นด้วย Python เพราะในฐานะที่เป็นภาษาสคริปต์มันสามารถนำไปใช้กับงานต่าง ๆ มากมายซึ่งยังมีความพร้อมของแพ็คเกจสำหรับการวิเคราะห์เฉพาะทางมีแหล่งข้อมูลออนไลน์ฟรีจำนวนหนึ่งและค่อนข้างง่ายต่อการเรียนรู้


ฉันยกระดับสิ่งนี้ไม่เพียงเพราะมันเขียนได้ดีและตอบสนองได้ดี แต่ยังเป็นเพราะฉันมีประสบการณ์ที่คล้ายกัน (รวมถึงการจู่โจมเป็นครั้งคราวกลับสู่ Fortran :-) และเขียนข้อสรุปที่คล้ายกันเกี่ยวกับภาษาและสภาพแวดล้อมของแอปพลิเคชันเหล่านี้
whuber

+1 ข้อสรุปที่ดีของเครื่องมือที่มีอยู่ ขอบคุณที่พูดถึง EML จากมุมมองของสคริปท์ EML นั้นค่อนข้างน่าสนใจเมื่อเทียบกับ Python (IMOP) แม้ว่าจะมีประโยชน์มากถ้า Erdas เป็น RS GUI ที่คุณเลือก แต่น่าเสียดายที่ไม่มีภาษาแบบรวมที่นำสิ่งที่ดีที่สุดจาก GIS และ RS ฉันยอมรับอย่างแน่นอนว่าแต่ละคนจำเป็นต้องใช้วิธีการที่ดีที่สุดที่มีอยู่และมีภาษาที่หลากหลายในการกำจัดของพวกเขา ฉันเชื่อว่าผู้เชี่ยวชาญ RS หนึ่งภาษาหายากในสาขานี้
Aaron

ฉันยอมรับว่าการเริ่มต้นด้วย Python ดูเหมือนว่าเป็นทางออกที่ดีที่สุดของฉันเนื่องจากเป็นโอเพ่นซอร์สและมีแหล่งข้อมูลออนไลน์มากมาย ฉันมีสิทธิ์เข้าถึง ENVI แต่สำหรับการวิจัยปัจจุบันของฉันฉันสามารถจัดการได้โดยไม่ทราบว่า IDL ฉันกำลังศึกษาสถิติเชิงพื้นที่ด้วยดังนั้น R ก็จะมีความสำคัญเช่นกัน @Aaron ดูเหมือนจะถูกต้อง - ผู้เชี่ยวชาญ RS ต้องเป็นหลายภาษา! ขอขอบคุณอีกครั้งสำหรับคำตอบโดยละเอียด นี่เป็นความช่วยเหลือที่ยิ่งใหญ่สำหรับใครบางคนที่เพิ่งเริ่มต้นในสนาม
เอมิลี่

@Emily สำหรับสถิติเชิงพื้นที่ใน Python ลองดูแพ็คเกจPySAL ( geodacenter.asu.edu/pysal ) มีหนังสือโดย Kenneth Bowman "An Introduction to Programming with IDL" ซึ่งเป็นการแนะนำทั่วไปที่ค่อนข้างดี ฉันคิดว่าคุณจะประหลาดใจที่คุณจะได้รับเพียงแค่ทำงานผ่านหนังสือเล่มนี้ ดังที่ฉันได้กล่าวถึงไวยากรณ์และโครงสร้างการเข้ารหัสส่วนใหญ่มีความคล้ายคลึงกันระหว่างภาษาที่กล่าวถึงดังนั้นจึงไม่เสียเวลา เมื่อคุณทำงานกับ ENVI ความรู้พื้นฐานของ IDL จะเป็นประโยชน์ในการวิจัยของคุณ มันไม่ได้ทั้งหมดหรือไม่มีอะไรกับภาษาที่กำหนด
เจฟฟรีย์อีแวนส์

โพสต์นี้เป็นบทสรุปที่ดี - นอกเหนือจากประสบการณ์ของฉัน: พิจารณาราคาสูงของ ArcGis, Envi, Matlab และเครื่องมืออื่น ๆ ฉันชอบ OpenSource ซึ่งฟรี สำหรับฉันการรวมกันของ Python / gdal และ QuantumGIS ทำงานได้อย่างสมบูรณ์แบบ คนอื่น ๆ ในที่ทำงานของฉันใช้ Matlab (แต่ก็แพงมาก) ในสภาพแวดล้อมของฉัน R ดูเหมือนว่านักชีววิทยาส่วนใหญ่จะใช้ด้วยเหตุผลบางอย่าง
สูงสุด

15

จากมุมมองของการรับรู้ระยะไกลประโยชน์หลักของ IDL คือมันขยายขีดความสามารถของ ENVIคล้ายกับวิธีที่ Python arcpy site-package ขยายการทำงานของ ArcGIS หากคุณจะไม่สามารถเข้าถึงแพลตฟอร์ม ENVI ได้ให้ลองเรียนรู้ภาษาโปรแกรมอื่น นอกจากนี้ IDL เป็นผลิตภัณฑ์เชิงพาณิชย์ในขณะที่ Python เป็นโอเพ่นซอร์สและมีฐานสนับสนุนขนาดใหญ่

จากมุมมองที่ใช้งานได้จริงPython , R (โอเพ่นซอร์ส) และMATLAB (เชิงพาณิชย์) เป็นภาษาที่สำคัญที่สุดสำหรับการทำงานจากการสำรวจระยะไกลในแต่ละวันของฉัน ฉันใช้ MATLAB สำหรับการประมวลผลภาพดิจิตอลส่วนใหญ่ Python สำหรับงานที่เกี่ยวข้องกับ GIS และ R เพื่อวัตถุประสงค์ด้านกราฟิก / การวิเคราะห์

ท้ายที่สุดถ้าฉันต้องมุ่งเน้นความพยายามทั้งหมดของฉันในภาษาเดียวฉันจะเลือกที่จะเรียนรู้ Python เป็นหลักเพราะฟังก์ชั่น Python นั้นเหมาะสมกับการประมวลผลที่เกี่ยวข้องกับ GIS มากกว่าการทำงานของ RS กล่าวอีกนัยหนึ่ง Python เป็น jack-of-all-trades ในขณะที่ IDL ไม่ใช่ นอกจากนี้NASA ใช้ Python !


1
มีโมดูลมากมายภายในไพ ธ อนเช่น pyh5 และ numpy / scipy นอกจากนี้ยังมีห้องสมุดขนาดใหญ่เช่นOSSIMโดยเฉพาะสำหรับการประมวลผลภาพ
Roland

1
+1 บนหลาม เป็นภาษาที่ใช้งานทั่วไปและหากคุณต้องการใช้เครื่องมือที่อาจหลุด 'ออกจากกล่อง' ด้วยการเขียนสคริปต์ GIS หลามก็สามารถทำได้

ขอบคุณพวกฟังดูเหมือนว่าฉันจะเริ่มทำงานกับ Python และขยายไปสู่ภาษาอื่น ๆ เมื่อฉันมีปัญหา ขอบคุณมากสำหรับความช่วยเหลือของคุณ.
เอมิลี่

1
อย่าลืม Rasterio: github.com/mapbox/rasterioห้องสมุดใหม่สำหรับ rasters สำหรับ Python
Alex Leith

2

ฉันขอแนะนำอย่างยิ่งให้เรียนรู้ทฤษฎีวิทยาศาสตร์คอมพิวเตอร์ขั้นพื้นฐานแทนการมุ่งเน้นไปที่ภาษาขั้นตอนเดียว การได้รับพื้นฐานในทฤษฎี CS จะช่วยให้คุณใช้ภาษาโปรแกรมแทนกันได้ ในแต่ละวันฉันใช้สองถึงสามภาษาในการเขียนโค้ด (ส่วนใหญ่ Matlab, R, Python) และในเดือนที่แล้วฉันได้เขียนโค้ดใน VB, BATCH และ EASE (PCI Focus) ด้วยเช่นกัน

สิ่งนี้ไม่เพียงสำคัญที่จะสามารถเรียนรู้หลายภาษาได้อย่างง่ายดาย แต่เพื่อหลีกเลี่ยงข้อผิดพลาดพื้นฐาน

หัวข้อที่แนะนำบางประการคือ:

  • ชนิดข้อมูลการใช้หน่วยความจำ
  • เงื่อนไข
  • การย้ำ
  • การจับคู่รูปแบบ
  • กระบวนทัศน์กระบวนงานแบบแยกส่วน

นอกจากนี้หากคุณมีปัญหาในการเขียนโค้ดให้ถอยกลับมาและเขียนรหัสเทียม โดยพื้นฐานแล้วการเขียนตรรกะทีละขั้นตอนของโค้ดและสิ่งที่คุณต้องการให้สำเร็จ

หากคุณเป็นนักเรียนฉันแนะนำให้ลงเรียนหลักสูตร comp และ sci ปีแรกและปีที่สอง

ไชโย


2

ฉันคิดว่านี่เป็นคำตอบที่คุ้มค่า: หน้าอันยอดเยี่ยมสำหรับการเรียนรู้วิธีใช้ Python สำหรับการสำรวจระยะไกลเป็นหน้านี้การบรรยายการบรรยายเป็นแบบฝึกหัดที่ยอดเยี่ยม: http://www.gis.usu.edu/~chrisg/python / 2009 /

สำหรับฉันการรวมกันของ Python และ QuantumGIS ช่วยแก้ปัญหา Remote Sensing และ GIS ของฉันทั้งหมด


0

ขึ้นอยู่กับแพ็คเกจที่คุณหวังว่าจะใช้ในการสำรวจระยะไกล (การวิเคราะห์ภาพ) ArcGIS (ESRI) ไม่ใช่แพ็คเกจตรวจจับระยะไกล หากคุณต้องการใช้แพ็คเกจโอเพ่นซอร์สฉันยอมรับว่า Python และ R เป็นภาษาที่ยอดเยี่ยม ฉันจะพิจารณา C ++ และ C ดังนั้นคุณสามารถดำดิ่งลึกเข้าไปในห้องสมุดบางแห่ง (เช่น: GDAL) หากคุณต้องการที่จะยึดติดกับแพคเกจการปิดการค้า (COTS) แล้วคุณจะต้องการดูเพิ่มเติมในภาษา C (C, C ++ และ C #) การเข้ารหัสที่มีความสุข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.