มากกว่า

การเรียกใช้ฟังก์ชัน GRASS ใน QGIS 2.4 จาก python console

การเรียกใช้ฟังก์ชัน GRASS ใน QGIS 2.4 จาก python console


ฉันใช้ qgis 2.4 และฉันกำลังมองหาวิธีที่ "ง่ายที่สุด" ในการดำเนินการเช่น ฟังก์ชัน r.in.gdal จากคอนโซลหลามใน qgis

โดยเฉพาะสำหรับ r.in.gdal ฉันไม่พบฟังก์ชันนี้ในโมดูลการประมวลผล (เช่น การประมวลผลการนำเข้า; processing.alglist('r.in')) ดังนั้น โมดูลการประมวลผลจึงดูไม่น่าจะเป็นไปได้ ?!?

ก่อนดำเนินการคำสั่ง Grass ต้องเปิด mapset คำสั่งใดทำหน้าที่นี้


r.in.gdal เป็นคำสั่งในการนำเข้าแรสเตอร์ไปยัง GRASS GIS ไม่ใช่ใน QGIS

มีสองตัวเลือกในการใช้ GRASS GIS ใน QGIS:

1) ด้วยปลั๊กอินหญ้า

  • คุณกำลังทำงานใน GRASS GIS และคุณสามารถใช้r.in.gdalใน คอนโซล Python ของ GRASS GIS เพื่อนำเข้าแรสเตอร์ไปยังตำแหน่ง/ชุดแผนที่

2) จากการประมวลผล

  • คุณกำลังทำงานใน QGIS ด้วยตำแหน่ง/ชุดแผนที่ "เสมือน" ที่ไม่เกี่ยวข้องกับตำแหน่ง/ชุดแผนที่ของ 1) ดังนั้นr.in.gdalไม่มีประโยชน์ -> ใช้โซลูชัน PyQGIS ใน คอนโซล Python ของ QGIS

คุณยังสามารถใช้ osgeo.gdal เพื่อนำเข้าแรสเตอร์ไปยังตำแหน่ง/แผนที่ของ GRASS GIS


SAGA GIS

โมดูล SAGA สามารถดำเนินการได้จาก GUI หรือจากตัวประมวลผลบรรทัดคำสั่งที่เรียกว่า saga_cmd ข้อดีของตัวประมวลผลบรรทัดคำสั่งคือความสามารถในการประมวลผลหลายเลเยอร์ในชุดงานเมื่อเรียกจากภายในสคริปต์ เช่น สคริปต์ Python ตามที่อธิบายไว้ที่นี่

Python มีฟังก์ชันดั้งเดิมของตัวเองเพื่อรันโปรแกรมภายนอก แต่วิธีที่ง่ายกว่านั้นคือการใช้สคริปต์ Python ที่จัดเตรียมโดยโครงการ GRASS GIS ซึ่งเป็นสคริปต์ที่เรียกว่า grass.py ซึ่งซ่อนความซับซ้อนของ Python ดั้งเดิมทั้งหมด (สคริปต์ grass.py เดียวกันมีฟังก์ชันเพิ่มเติมซึ่งผู้ใช้ SAGA อาจสนใจหรือไม่ก็ได้)

หมายเหตุ: สคริปต์ grass.py อาจถูกเปลี่ยนชื่อเป็น core.py ใน GRASS รุ่นล่าสุด

สคริปต์ grass.py มีฟังก์ชันตามปกติที่ใช้เรียกโมดูล GRASS ซึ่งแต่ละอันเป็นโปรแกรมแบบยืนอิสระ แต่สามารถใช้งานได้ง่ายและไม่มีการเปลี่ยนแปลงภายในสคริปต์ที่เรียกใช้โมดูล SAGA อันที่จริงสามารถใช้เรียกโปรแกรมภายนอกใดๆ จากสคริปต์ Python ได้

วิธีเรียกโมดูล SAGA จากสคริปต์ Python ง่ายๆ

และใช้การเรียกฟังก์ชันต่อไปนี้:

ที่ไหน . แทนอาร์กิวเมนต์ saga_cmd ตามที่จะใช้จากบรรทัดคำสั่ง

ตัวอย่างเช่น หากคุณต้องการวิเคราะห์ภูมิประเทศสำหรับกริดจำนวนหนึ่งจาก GUI คุณจะต้องใช้หนึ่งในโมดูลการวิเคราะห์ภูมิประเทศ ในตัวอย่างนี้โมดูล Local Morphometry ซ้ำๆ หนึ่งครั้งสำหรับแต่ละกริด ในทางกลับกัน เมื่อใช้ Python และ grass.py คุณสามารถประมวลผลกริดทั้งหมดเป็นชุด ดังที่แสดงไว้ที่นี่สำหรับ Windows (สมมติว่าเป็นไดเร็กทอรีชื่อ 'yourPath' ที่เต็มไปด้วยกริดเท่านั้น) แต่จะคล้ายกันสำหรับ Linux:

แค่นั้นแหละ! และแน่นอน คุณสามารถรันคำสั่งดังกล่าวได้หลายคำสั่งตามลำดับตามต้องการ

หมายเหตุสำคัญเกี่ยวกับ Python และ SAGA ไม่จำเป็นต้องใช้ SAGA Python API (หัวเรื่องของรายการ Wiki ที่แยกต่างหาก) และไม่จำเป็นต้องใช้เพื่อเรียกใช้สคริปต์ python ที่เรียก saga_cmd โดยใช้ grass.py
SAGA Python API เป็นอินเทอร์เฟซพิเศษของ SAGA API เพื่อให้สามารถเข้าถึงผ่านสคริปต์ Python อินเทอร์เฟซนี้แจกจ่ายด้วยไบนารี SAGA และต้องเข้ากันได้กับตัวแปล Python เดียวกันกับที่ใช้ในสคริปต์ที่ใช้
ในขณะที่เขียน SAGA 2.0.4 รีลีสจะทำงานกับ Python รีลีส 2.4.4 เพื่อเข้าถึง SAGA Python API
อย่างไรก็ตาม การเผยแพร่ไบนารี SAGA เป็นระยะที่จัดทำโดยไซต์ LaserData อาจหรืออาจเข้ากันไม่ได้กับ Python 2.4.4 และอาจต้องใช้ Python รีลีสอื่นหรือคอมไพล์อินเทอร์เฟซใหม่ คุณอาจต้องทดลองเล็กน้อยถ้าคุณใช้ Laserdata รีลีส
สคริปต์ Grass.py จะทำงานกับ Python รุ่น 2.6.4 เช่นเดียวกับ 2.4.4 และ (น่าจะ) อะไรก็ได้ที่อยู่ระหว่างนั้น

สิ่งนี้นำฉันไปสู่หัวข้อถัดไป


QGIS เป็นระบบข้อมูลทางภูมิศาสตร์ (GIS) ที่มีคุณสมบัติครบถ้วน เป็นมิตรกับผู้ใช้ ฟรีและโอเพ่นซอร์ส (GIS) ที่ทำงานบนแพลตฟอร์ม Unix, Windows และ MacOS

1. การจัดการข้อมูลเชิงพื้นที่ที่ยืดหยุ่นและมีประสิทธิภาพ

  • รองรับข้อมูลแรสเตอร์ เวกเตอร์ เมช และพอยต์คลาวด์ในรูปแบบมาตรฐานอุตสาหกรรมที่หลากหลาย
    • รูปแบบแรสเตอร์รวม: GeoPackage, GeoTIFF, GRASS, ArcInfo ไบนารีและกริด ASCII, ERDAS Imagine SDTS, WMS, WCS, PostgreSQL/PostGIS และรูปแบบอื่นๆ ที่รองรับ GDAL
    • รูปแบบเวกเตอร์ประกอบด้วย: GeoPackage, ESRI Shapefiles, GRASS, SpatiaLite, PostgreSQL/PostGIS, MSSQL, Oracle, WFS, Vector Tiles และรูปแบบอื่นๆ ที่รองรับ OGR
    • รูปแบบตาข่ายรวม: NetCDF, GRIB, 2DM และรูปแบบอื่นๆ ที่รองรับ MDAL
    • รูปแบบจุดเมฆ: ชุดข้อมูล LAS/LAZ และ EPT

    ตัวอย่าง: แอนิเมชั่นชั่วขณะ

    • ตัวเลือกการเรนเดอร์ที่หลากหลายใน 2D และ 3D
    • ควบคุมสัญลักษณ์ การติดฉลาก คำอธิบาย และองค์ประกอบกราฟิกเพิ่มเติมสำหรับแผนที่ที่แสดงผลอย่างสวยงาม
    • การจัดสไตล์ขั้นสูงโดยใช้การแทนที่ที่กำหนดโดยข้อมูล โหมดการผสม และเอฟเฟกต์การวาด
    • ทางลาดสีในตัวมากกว่า 500 แบบ (cpt-city, ColorBrewer เป็นต้น)
    • สร้างและอัปเดตแผนที่ด้วยมาตราส่วน ขอบเขต สไตล์ และการตกแต่งที่ระบุผ่านเลย์เอาต์ที่บันทึกไว้
    • สร้างหลายแผนที่ (และรายงาน) โดยอัตโนมัติโดยใช้ QGIS Atlas และ QGIS Reports
    • เอาต์พุตที่ยืดหยุ่นได้โดยตรงไปยังเครื่องพิมพ์ หรือเป็นรูปภาพ (แรสเตอร์), PDF หรือ SVG สำหรับการปรับแต่งเพิ่มเติม
    • การปรับปรุงการเรนเดอร์แบบทันทีโดยใช้เครื่องกำเนิดเรขาคณิต (เช่น สร้างและจัดรูปแบบเรขาคณิตใหม่จากคุณสมบัติที่มีอยู่)
    • โหมดแสดงตัวอย่างสำหรับการทำแผนที่แบบรวม (เช่น ขาวดำ ตาบอดสี)

    สำหรับแผนที่เพิ่มเติมที่สร้างด้วย QGIS โปรดไปที่ QGIS Map Showcase Flickr Group

    3. การวิเคราะห์เชิงพื้นที่ขั้นสูงและมีประสิทธิภาพ

    • กรอบการประมวลผลที่ทรงพลังพร้อมอัลกอริธึมการประมวลผลดั้งเดิมกว่า 200+ รายการ
    • เข้าถึงอัลกอริธึมการประมวลผลมากกว่า 1,000 รายการผ่านผู้ให้บริการ เช่น GDAL, SAGA, GRASS, OrfeoToolbox รวมถึงโมเดลที่กำหนดเองและสคริปต์การประมวลผล
    • กลไกจัดการฐานข้อมูลเชิงพื้นที่ (ตัวกรอง การรวม ความสัมพันธ์ แบบฟอร์ม ฯลฯ) ให้ใกล้เคียงกับแหล่งข้อมูลและรูปแบบที่ไม่ขึ้นกับรูปแบบมากที่สุด
    • การแสดงภาพการสืบค้นข้อมูลเชิงพื้นที่และผลลัพธ์การประมวลผลทางภูมิศาสตร์โดยทันที
    • ตัวสร้างแบบจำลองกราฟิกและการประมวลผลแบบกลุ่ม

    ตัวอย่าง: ไอโซโครนการเดินทาง

    4. การปรับแต่งและขยายที่ทรงพลัง

    • ปรับแต่งประสบการณ์ผู้ใช้ได้อย่างเต็มที่ รวมถึงอินเทอร์เฟซผู้ใช้และการตั้งค่าแอปพลิเคชันที่ตอบสนองผู้ใช้ระดับสูงและผู้เริ่มต้นใช้งาน
    • เอ็นจิ้นการแสดงออกที่หลากหลายเพื่อความยืดหยุ่นสูงสุดในการแสดงภาพและการประมวลผล
    • ระบบนิเวศของปลั๊กอินที่กว้างขวางและหลากหลายซึ่งรวมถึงตัวเชื่อมต่อข้อมูล เครื่องมือช่วยในการแปลงเป็นดิจิทัล เครื่องมือวิเคราะห์และการสร้างแผนภูมิขั้นสูง การเก็บข้อมูลภาคสนาม ฯลฯ
    • ตัวจัดการสไตล์สำหรับสร้าง จัดเก็บ และจัดการสไตล์เพื่อการแชร์สไตล์ที่ง่ายดาย
    • Python และ C++ API สำหรับแอปพลิเคชันแบบสแตนด์อโลน (หัวขาด) รวมถึงสคริปต์ที่ครอบคลุมในแอปพลิเคชัน (PyQGIS)

    เซิร์ฟเวอร์แผนที่แบบไม่มีหัว -- ทำงานบน Linux, macOS, Windows หรือในคอนเทนเนอร์เทียบท่า -- ที่ใช้ฐานรหัสเดียวกันกับ QGIS

    • โปรโตคอลมาตรฐานอุตสาหกรรม (WMS, WFS, WFS3/OGC API สำหรับคุณสมบัติและ WCS) อนุญาตให้เสียบปลั๊กกับชุดซอฟต์แวร์ใดๆ
    • ทำงานร่วมกับเว็บเซิร์ฟเวอร์ใดก็ได้ (Apache, nginx ฯลฯ) หรือแบบสแตนด์อโลน
    • การทำแผนที่ QGIS ที่สวยงามทั้งหมดได้รับการสนับสนุนด้วยการรองรับการพิมพ์ที่ดีที่สุดในระดับเดียวกัน
    • ปรับแต่งได้อย่างเต็มที่ด้วยการสนับสนุนสคริปต์ Python Python

    ตัวอย่าง: การตอบสนอง WMS ของเซิร์ฟเวอร์ QGIS

    ตัวอย่าง: การตอบสนองของเซิร์ฟเวอร์ QGIS WFS

    QGIS ได้รับการพัฒนาโดยใช้ชุดเครื่องมือ Qt และ C++ ตั้งแต่ปี 2545 และมีส่วนต่อประสานกราฟิกกับผู้ใช้ที่ใช้งานง่ายและน่าพึงพอใจพร้อมการสนับสนุนหลายภาษา ได้รับการดูแลโดยทีมนักพัฒนาที่กระตือรือร้นและได้รับการสนับสนุนจากชุมชนที่มีชีวิตชีวาของผู้เชี่ยวชาญและผู้ที่ชื่นชอบ GIS ตลอดจนผู้เผยแพร่ข้อมูลเชิงพื้นที่และผู้ใช้ปลายทาง

    รุ่นและรอบการเผยแพร่

    การพัฒนาและการเผยแพร่ QGIS เป็นไปตามกำหนดการ/แผนงานตามเวลา QGIS มีสามสาขาหลักที่ผู้ใช้สามารถติดตั้งได้ เหล่านี้เป็น ปล่อยระยะยาว (LTR) สาขา, รุ่นล่าสุด (LR) สาขา และ การพัฒนา (ทุกคืน) สาขา.

    ทุกเดือนมี จุดปล่อย Point ที่มีการแก้ไขข้อบกพร่องให้กับ LTR และ LR

    QGIS เผยแพร่ภายใต้ GNU Public License (GPL) เวอร์ชัน 2 หรือเวอร์ชันที่ใหม่กว่า การพัฒนา QGIS ภายใต้ใบอนุญาตนี้หมายความว่าคุณสามารถ (ถ้าคุณต้องการ) ตรวจสอบและแก้ไขซอร์สโค้ด และรับประกันว่าคุณ ผู้ใช้ที่มีความสุขของเราจะสามารถเข้าถึงโปรแกรม GIS ที่ไม่มีค่าใช้จ่ายและสามารถปรับเปลี่ยนได้อย่างอิสระ

    QGIS เป็นส่วนหนึ่งของ Open-Source Geospatial Foundation (OSGeo) ซึ่งนำเสนอโครงการซอฟต์แวร์โอเพ่นซอร์ส GIS เสริมที่หลากหลาย

    การติดตั้งและใช้งาน QGIS

    ไบนารีที่คอมไพล์ล่วงหน้าสำหรับ QGIS มีอยู่ที่หน้าดาวน์โหลด QGIS.org โปรดปฏิบัติตามคำแนะนำในการติดตั้งอย่างระมัดระวัง

    คู่มือการสร้างสามารถใช้เพื่อเริ่มต้นสร้าง QGIS จากแหล่งที่มา

    สำหรับการติดตั้งเซิร์ฟเวอร์ QGIS โปรดดูเอกสารการเริ่มต้นใช้งาน

    มีเอกสารให้เลือกหลากหลาย ซึ่งรวมถึง:

    ช่องทางช่วยเหลือและสนับสนุน

    มีหลายช่องทางที่คุณสามารถค้นหาความช่วยเหลือและการสนับสนุนสำหรับ QGIS:

    • การใช้ไซต์ชุมชน QGIS
    • เข้าร่วมรายชื่อผู้รับจดหมาย qgis-users
    • สนทนากับผู้ใช้รายอื่นแบบเรียลไทม์ โปรดรอสักครู่เพื่อตอบคำถามของคุณ เนื่องจากผู้คนจำนวนมากในช่องกำลังทำสิ่งอื่นและอาจใช้เวลาสักครู่กว่าพวกเขาจะสังเกตเห็นคำถามของคุณ เส้นทางต่อไปนี้จะพาคุณไปยังห้องสนทนาเดียวกัน:
      • ใช้ไคลเอ็นต์ IRC และเข้าร่วมช่อง #qgis บน irc.freenode.net
      • การใช้ไคลเอ็นต์ Matrix และเข้าร่วมห้อง #qgis:matrix.org
      • การใช้แชท Gitter

      มีส่วนร่วมกับชุมชน

      การรายงานจุดบกพร่องและการแก้ไขข้อผิดพลาด

      คุณช่วยเราได้ โดยส่งรายงานข้อบกพร่องหรือแก้ไขข้อบกพร่อง ในตัวติดตามบั๊ก QGIS

      คุณสมบัติและการปรับปรุงใหม่

      หากคุณต้องการสนับสนุนโปรแกรมแก้ไข คุณสามารถ:

      จากนั้นทีมพัฒนาจะตรวจสอบการสนับสนุนของคุณและส่งต่อไปยังต้นน้ำได้ตามความเหมาะสม

      หากคุณคอมมิตฟีเจอร์ใหม่ ให้เพิ่ม [FEATURE] ในข้อความคอมมิตและให้คำอธิบายที่ชัดเจนเกี่ยวกับฟีเจอร์ใหม่ ผู้ดูแลจะเพิ่มป้ายกำกับความต้องการเอกสารและจะสร้างปัญหาโดยอัตโนมัติใน repo QGIS-Documentation ซึ่งคุณหรือผู้อื่นควรเขียนเอกสารเกี่ยวกับเรื่องนี้

      สำหรับการเปลี่ยนแปลงในวงกว้าง คุณสามารถเปิด QEP (QGIS Enhancement Proposal) ใช้ QEP ในกระบวนการสร้างและหารือเกี่ยวกับการปรับปรุงหรือนโยบายใหม่สำหรับ QGIS

      โปรดช่วยแปล QGIS เป็นภาษาของคุณ ขณะนี้มีภาษาประมาณสี่สิบภาษาอยู่ในอินเทอร์เฟซผู้ใช้ของเดสก์ท็อปแล้ว และอีกประมาณแปดสิบภาษาพร้อมให้บริการใน transifex ที่พร้อมสำหรับการแปล

      กระบวนการแปลได้รับการจัดการโดยทีมการแปล และกิจกรรมทั้งหมดดำเนินการภายใต้แพลตฟอร์ม Transifex

      หากคุณไม่ใช่นักพัฒนา มีความเป็นไปได้อื่นๆ อีกมากมายที่ไม่ต้องใช้ทักษะการเขียนโปรแกรมเพื่อช่วยให้ QGIS พัฒนา ตรวจสอบโฮมเพจโครงการของเราสำหรับข้อมูลเพิ่มเติม


      ข้อความและคำเตือนในฟังก์ชันเฉพาะ

      คำเตือนในคอนโซล R: คำเตือน: การตรวจสอบการฉายภาพแบบโอเวอร์ไรด์ Windows ไม่รู้จักการฉายภาพของแรสเตอร์ DEM มันจะถูกเขียนทับด้วยหนึ่งในจุดสังเกต ( ไดเรกทอรีการทำงานของคุณ ). โปรดตรวจสอบว่าการคาดการณ์ตรงกัน

      GRASS มักจะตรวจสอบว่าไฟล์ทั้งหมดที่นำเข้ามาในชุดแผนที่มีการฉายภาพเหมือนกันหรือไม่ อย่างไรก็ตาม ใน Windows การตรวจสอบนี้จะส่งผลให้เกิดข้อผิดพลาดเสมอ ดังนั้น การตรวจสอบจะถูกปิดใช้งานใน Windows และผู้ใช้จะถูกขอให้ตรวจสอบให้แน่ใจว่าแหล่งที่มาทั้งหมดมาจากการฉายภาพเดียวกันด้วยตนเอง (เช่น ใช้ GIS อื่น)


      การทดสอบอัลกอริธึมการประมวลผลทางภูมิศาสตร์

      ส่วนนี้อธิบายวิธีต่างๆ ที่ใช้ในการทดสอบผลลัพธ์จาก (หรืออินพุตไปยัง) อัลกอริทึมการประมวลผลทางภูมิศาสตร์

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

      ในการนับจำนวนคุณสมบัติในเลเยอร์ ให้ใช้ layer.dataProvider().featureCount() มากกว่า layer.featureCount() ในกรณีที่การเปลี่ยนแปลงยังไม่ได้รับการเผยแพร่

      บางครั้งการนับจำนวนคุณสมบัติไม่เพียงพอ ที่นี่เราคำนวณพื้นที่ทั้งหมดของคุณสมบัติทั้งหมดในเลเยอร์

      เราสามารถเปรียบเทียบเรขาคณิตที่แน่นอนของจุดสนใจโดยใช้ WKT

      สำหรับชุดข้อมูลขนาดใหญ่ การเปรียบเทียบการตรวจสอบของเลเยอร์กับค่าที่ทราบนั้นมีประโยชน์มากกว่า แทนที่จะตรวจสอบคุณลักษณะแต่ละรายการ เราสามารถเรียกใช้เช็คซัมกับข้อมูลในขณะที่มันถูกเก็บไว้ในดิสก์ แต่การตรวจสอบทุกส่วนของไฟล์รูปร่าง (.shp, .dbf, .shx เป็นต้น) นั้นยุ่งยากและจะไม่ทำงานกับเลเยอร์ที่ใช้ข้อมูลหน่วยความจำ ผู้ให้บริการ. แต่เราสามารถใช้ฟังก์ชันสั้นๆ ซึ่งจะคำนวณเช็คซัมของการฉายภาพของเลเยอร์ ชื่อฟิลด์ เรขาคณิตและคุณลักษณะของแต่ละจุดสนใจ วิธีนี้มีโบนัสเพิ่มเติมที่หากในบางจุดข้อมูลการทดสอบถูกย้ายจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่ง (เช่น shapefile ไปยัง SQLite) เช็คซัมจะยังคงตรงกัน (โดยมีเงื่อนไขว่าข้อมูลพื้นฐานจะไม่ถูกแก้ไข)

      จากนั้นตรวจสอบผลรวมของเลเยอร์กับค่าที่ทราบ


      4.3 ซอฟต์แวร์ GIS สำหรับเดสก์ท็อปโอเพ่นซอร์ส

      ในบทเรียนที่ 1 และ 2 เราเน้นที่แนวทางการเขียนโปรแกรม Python ขั้นสูงเป็นหลักในโลก ESRI ArcGIS บทเรียนที่ 3 เกี่ยวข้องกับขั้นตอนที่ห่างจากซอฟต์แวร์ GIS ที่เป็นกรรมสิทธิ์ไปสู่ไลบรารี Python แบบโอเพนซอร์สและเครื่องมือซอฟต์แวร์ แม้ว่าหนึ่งในประเด็นหลักที่เราต้องการจะทำ ในบทเรียนนี้ก็คือว่าโลกทั้งสองไม่ได้แยกจากกันอย่างที่คิด ในบทเรียนสุดท้ายของหลักสูตรนี้ เราจะทิ้ง ArcGIS ไว้เบื้องหลังโดยสมบูรณ์ และดู QGIS ทางเลือกแบบโอเพ่นซอร์สอย่างละเอียดยิ่งขึ้น ซึ่งเป็น GIS บนเดสก์ท็อปฟรีที่คุณน่าจะเคยได้ยินมามากที่สุด

      ในขณะที่ประวัติของซอฟต์แวร์โอเพ่นซอร์ส GIS ย้อนหลังไปมากกว่า 30 ปี ซอฟต์แวร์ GIS แบบโอเพ่นซอร์สบนเดสก์ท็อปเพิ่งมาถึงระดับวุฒิภาวะและความสามารถในการใช้งานที่เป็นธรรมชาติเมื่อไม่นานมานี้ ซึ่งถือว่าเทียบได้กับซอฟต์แวร์ GIS บนเดสก์ท็อปที่เป็นกรรมสิทธิ์ ด้วยซอฟต์แวร์ GIS บนเดสก์ท็อป เราหมายถึงซอฟต์แวร์แบบสแตนด์อโลนที่สามารถติดตั้งและเรียกใช้ในเครื่องคอมพิวเตอร์ได้ และทำให้การจัดการข้อมูล GIS ทั่วไปและฟังก์ชันการวิเคราะห์ (อย่างน้อยทั้งข้อมูลแรสเตอร์และเวกเตอร์) สามารถเข้าถึงได้ผ่าน GUI ที่ใช้งานง่าย คล้ายกับผลิตภัณฑ์ ArcGIS Desktop อย่างไรก็ตาม วันนี้มีทางเลือกโอเพ่นซอร์สหลายทางเลือก รวมถึงทางเลือกที่เราสรุปไว้ด้านล่าง:

      หญ้า GIS

      Grass (ระบบสนับสนุนการวิเคราะห์ทรัพยากรทางภูมิศาสตร์) เป็นบรรพบุรุษของ GIS แบบโอเพ่นซอร์ส แต่ยังอยู่ภายใต้การพัฒนาอย่างแข็งขันด้วยประวัติยาวนานกว่า 30 ปี การพัฒนาเริ่มต้นโดยห้องปฏิบัติการวิจัยวิศวกรรมการก่อสร้างของกองทัพบกสหรัฐในปี 2525 แต่ปัจจุบันได้รับการบำรุงรักษาโดยมูลนิธิโอเพ่นซอร์ส Geospatial Foundation (OSGeo) ภายใต้ใบอนุญาต GNU GPL Grass ส่วนใหญ่เขียนด้วยภาษา C/C++ และมีชุดเครื่องมือ GIS จำนวนมากที่จัดกลุ่มเป็นโมดูล ระบบ GIS แบบโอเพนซอร์สอื่นๆ เช่น QGIS จะผสานรวมโมดูล GRASS เหล่านี้เพื่อขยายฟังก์ชันการทำงาน

      GvSIG Desktop

      gvSIG Desktop เป็นซอฟต์แวร์โอเพ่นซอร์สที่อายุน้อยกว่ามากโดย gvSIG Association ซึ่งเขียนด้วยภาษาจาวา เปิดตัวครั้งแรกในปี 2547 คล้ายกับ Grass มีการเผยแพร่ภายใต้ลิขสิทธิ์ GNU GPL เวอร์ชันล่าสุด (ในขณะที่เขียนบทความนี้) คือ 2.4 เผยแพร่ในเดือนกุมภาพันธ์ 2018

      แผนที่Window GIS

      MapWindow เป็นโครงการโอเพ่นซอร์สที่แตกต่างจากโครงการอื่น ๆ ส่วนใหญ่ที่ระบุไว้ในที่นี้ มีเฉพาะใน Windows เท่านั้น เขียนเป็นภาษา C# สำหรับแพลตฟอร์ม .NET ซึ่งอยู่ภายใต้ Mozilla Public License และดูแลและปรับปรุงโดยทีมอาสาสมัคร MapWindow มีให้ใช้งานในเวอร์ชัน 4 ในปี 2015 การเขียนซอฟต์แวร์ใหม่ทั้งหมดได้เริ่มต้นขึ้นซึ่งปัจจุบันมีให้บริการในชื่อ MapWindow5 เวอร์ชัน 5.2.0

      OpenJump

      OpenJump เดิมเรียกว่า Jump GIS และออกแบบโดย Vivid Solutions เป็นซอฟต์แวร์โอเพ่นซอร์ส GIS ที่ใช้ Java ที่พัฒนาโดยทีมอาสาสมัคร เช่นเดียวกับระบบ GIS อื่น ๆ ส่วนใหญ่ มีอินเทอร์เฟซสำหรับการสร้างปลั๊กอินเพื่อขยายฟังก์ชันการทำงาน รุ่นล่าสุดคือตั้งแต่เดือนเมษายน 2017 ดังนั้นการพัฒนาคอร์จึงดูเหมือนว่าจะช้าลงเล็กน้อย OpenJump เผยแพร่ภายใต้ลิขสิทธิ์ GNU GPL

      ฤดูใบไม้ผลิ

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

      uDig คือระบบ GIS ที่ใช้ Java ซึ่งฝังอยู่ในแพลตฟอร์ม Eclipse ได้รับการพัฒนาโดย Refractions Research และเผยแพร่ภายใต้ Eclipse Public License EPL ปัจจุบัน เวอร์ชันใหม่ล่าสุดที่พร้อมใช้งานคือตัวเลือกการเผยแพร่สำหรับเวอร์ชัน 2.0

      สุดท้ายนี้ เรามาที่ QGIS ซึ่งเป็นซอฟต์แวร์โอเพ่นซอร์สที่บทเรียนนี้จะเกี่ยวกับเป็นหลัก การพัฒนา QGIS เริ่มต้นในปี 2545 โดย Gary Sherman ภายใต้ชื่อ Quantum GIS QGIS เผยแพร่การอัปเดตในช่วงเวลาสั้น ๆ และถึงขั้นใหม่แล้วด้วยการเปิดตัวเวอร์ชัน 3.0 ในเดือนกุมภาพันธ์ 2018 QGIS ได้รับการพิจารณาว่าเป็นซอฟต์แวร์ GIS เดสก์ท็อปโอเพนซอร์สชั้นนำเนื่องจากมีฟังก์ชันการทำงานที่หลากหลาย ใช้งานง่าย - ต่อการใช้งานและอินเทอร์เฟซที่ยืดหยุ่น และชุมชนที่กระตือรือร้นมาก QGIS ถูกเขียนด้วย C ++ และ Python มันมีอินเทอร์เฟซสำหรับขยายความสามารถผ่านปลั๊กอินที่เขียนด้วย Python ที่เราจะใช้งานในภายหลังในบทเรียนนี้ QGIS ได้รับการพัฒนาโดยทีมอาสาสมัครและองค์กรต่างๆ และได้รับการสนับสนุนจากองค์กรร่ม Open Source Geospatial Foundation สำหรับซอฟต์แวร์โอเพ่นซอร์ส GIS เผยแพร่ภายใต้ใบอนุญาต GNU GPL

      จากมุมมองของการเขียนโปรแกรม จุดเน้นของบทเรียนนี้จะอยู่ที่ การเขียนโปรแกรมเชิงวัตถุ ใน Python โดยมีเป้าหมายเพื่อให้เกิดความเข้าใจที่ดีขึ้นเกี่ยวกับแนวคิดบางอย่าง เช่น อ็อบเจกต์และคลาสที่เราใช้ค่อนข้างมากใน Geog485 และในบทเรียนแรกของหลักสูตรนี้ แต่ตอนนี้ เราจะศึกษาหัวข้อนี้ในเชิงลึกมากขึ้น และคุณจะได้เรียนรู้วิธีการเขียนคลาสของคุณเองและใช้งานอย่างมีประสิทธิภาพในโครงการโปรแกรมมิ่งของคุณเอง เพื่อสร้างโค้ดที่มีโครงสร้างดีขึ้นซึ่งอ่านง่ายกว่าและดูแลรักษาง่ายกว่าด้วย คุณจะใช้สิ่งที่คุณเรียนรู้ในทางทฤษฎีในบทเรียนนี้เพื่อเขียนปลั๊กอินสำหรับ QGIS เพื่อขยายขีดความสามารถ การใช้ปลั๊กอินเหล่านี้จะรวมงานออกแบบ GUI เพิ่มเติมกับ QT เพื่อความต่อเนื่องของสิ่งที่คุณเรียนรู้ในบทที่ 2 อย่างไรก็ตาม ก่อนที่เราจะพูดถึงการเขียนโปรแกรมเชิงวัตถุ เราจะให้ภาพรวมคร่าวๆ เกี่ยวกับ QGIS ในส่วนถัดไป


      ข้อมูลผู้แต่ง

      ที่อยู่ปัจจุบัน: ARPA Lombardia, Milan, Italy

      สังกัด

      Department of Environment, Land and Infrastructure Engineering, Politecnico di Torino, corso Duca degli Abruzzi, 24, 10129, โตริโน, อิตาลี

      Susanna Grasso, Pierluigi Claps, Daniele Ganora และ Andrea Libertino

      คุณยังสามารถค้นหาผู้เขียนคนนี้ใน PubMed Google Scholar

      คุณยังสามารถค้นหาผู้เขียนคนนี้ใน PubMed Google Scholar

      คุณยังสามารถค้นหาผู้เขียนคนนี้ใน PubMed Google Scholar

      คุณยังสามารถค้นหาผู้เขียนคนนี้ใน PubMed Google Scholar

      ผลงาน

      ผู้เขียนทุกคนมีส่วนสนับสนุนแนวคิดและการออกแบบการศึกษา SG ได้พัฒนาแพลตฟอร์มเว็บและเขียนร่างต้นฉบับของต้นฉบับ ผู้เขียนทุกคนมีส่วนร่วมในฉบับแก้ไข อ่านและอนุมัติต้นฉบับสุดท้าย

      ผู้เขียนที่สอดคล้องกัน


      6 คำตอบ 6

      ในการกำหนดค่า Run/Debug ให้เพิ่ม -i ให้กับตัวเลือกล่าม การดำเนินการนี้จะหยุดไม่ให้ปิดเซสชัน python แม้ว่าจะรันสำเร็จแล้วก็ตาม กล่าวคือ คุณจะสามารถดูเนื้อหาตัวแปรทั้งหมดได้

      หากคุณสร้างการกำหนดค่ารันไทม์ หลังจากกดปุ่มรัน (ไอคอน "เล่น" สีเขียว) คุณจะได้ผลลัพธ์ที่ต้องการ: รหัสของคุณจะแสดงเอาต์พุตในคอนโซลซึ่งเปิดขึ้นอย่างอิสระที่ด้านล่าง

      คุณสามารถสร้างการกำหนดค่าต่างๆ มากมายสำหรับการรันและดีบักภายในโปรเจ็กต์เดียว

      นี่คือลิงค์จากวิธีใช้เว็บของ PyCharm ซึ่งครอบคลุมการกำหนดค่าการรัน/ดีบัก: http://www.jetbrains.com/pycharm/webhelp/run-debug-configuration-python.html

      วิธีที่เป็นไปได้ในการจัดการตัวแปรโดยใช้โหมดดีบักและหน้าต่างประเมินนิพจน์ถูกเพิ่มในความคิดเห็น แต่ฉันพลาดรายละเอียดไปอย่างหนึ่ง: หากต้องการดูผลลัพธ์ของการเรียกใช้โค้ดแบบโต้ตอบ คุณต้องเปลี่ยนจากแท็บโหมดเอาต์พุต Debugger เป็น Console ที่ด้านบนซ้าย ด้านข้างของบานหน้าต่างด้านล่าง


      เคล็ดลับสัตว์เลี้ยงโง่ (อย่าใช้มัน!)

      หมายเหตุ: สิ่งนี้เป็นสิ่งที่ท้อแท้อย่างมาก หลีกเลี่ยงการแก้ไขเนื้อหาของชุดแมป GRASS GIS ด้วยตนเอง (อย่างน้อยอย่าบ่นหากคุณทำของแตก)

      cd ด่วนไปยังไดเร็กทอรี MAPSET หากต้องการสร้างฟังก์ชันสั้นๆ ที่เรียกว่า 'g.cd' เพื่อเปลี่ยนเป็น mapset dir ให้เพิ่มลงใน

      ด้วยวิธีนี้คุณสามารถทำเช่น: "g.cd colr/" เพื่อไปยังไดเร็กทอรีตารางสี หรือ "ก.ซีดี .." เพื่อไปที่ไดเร็กทอรี LOCATION

      เสร็จสิ้นคำสั่งที่ง่ายกว่าจากประวัติคำสั่ง

      เพิ่มลงในไฟล์ชื่อ

      จากนั้นคุณสามารถพิมพ์คำสั่งเล็กน้อยและใช้ PgUp และ PgDn เพื่อวนรอบประวัติคำสั่งที่ตรงกับ Ctrl-r ที่เงอะงะน้อยกว่า นอกจากนี้ยังบอกให้เปลือกแฟลชเป็นสัญญาณเตือนแทนที่จะส่งเสียงบี๊บไปที่ลำโพง (ทำให้การเติมแท็บเข้ากันได้กับเพื่อนร่วมสำนักงานของคุณ)


      การคำนวณความลึกลับของกระแส (ในผลิตภัณฑ์ esri)

      ของแม่น้ำ ไซนัส คือแนวโน้มที่จะคดเคี้ยวไปมาข้ามที่ราบน้ำท่วมถึงในรูปแบบรูปตัว S เมื่อเวลาผ่านไป เมื่อกระแสน้ำเคลื่อนตัวข้ามภูมิประเทศ อาจทิ้งร่องรอยว่าช่องแม่น้ำเคยอยู่ตรงไหน (สิ่งเหล่านี้อาจอยู่ในรูปของแผลเป็นคดเคี้ยวหรือทะเลสาบอ็อกบาว) รูปแบบเหล่านี้มักจะปรากฏในช่องทางสตรีมที่พบในตะกอนที่นิ่มกว่า หากเส้นทางของแม่น้ำถูกควบคุมโดยพื้นหิน ปัจจัยอื่นๆ—โดยหลักคือความแข็งแรงและโครงสร้างของหิน—ควบคุมการไหลของแม่น้ำ หลักสูตรการสตรีมไม่กี่หลักสูตรเป็นทางตรงทั้งหมด และส่วนใหญ่แสดงทางคดเคี้ยว

      หากคุณเคยทำงานกับข้อมูลอุทกวิทยาใน GIS คุณอาจต้องการกำหนดความแปรปรวนของแม่น้ำทั้งสายหรือเฉพาะ ‘เข้าถึง‘ ของแม่น้ำที่สนใจ กระแสน้ำที่ไม่คดเคี้ยวเลยมีค่าไซนูออสเท่ากับ 1 ยิ่งกระแสน้ำคดเคี้ยวมาก ค่าไซน์ก็จะยิ่งเข้าใกล้ 0 มากเท่านั้น โชคดีที่การระบุไซน์ของเส้นนั้นง่ายโดยใช้เครื่องคำนวณภาคสนาม หรือไพทอน ขึ้นอยู่กับรุ่นของซอฟต์แวร์ GIS ที่คุณใช้ วิธีการจะแตกต่างกันไป ดูโพสต์นี้สำหรับรายละเอียดสำหรับ ArcView 3 (เก่า!) และ ArcMap 8.x-10.2


      การออกแบบ GUI ทั่วไป

      เค้าโครง

      สำหรับผู้ใช้บางคน แนวทางปัจจุบันของหน้าต่างแยก (SDI) ทำให้เกิดน้ำท่วมหน้าต่าง โดยเฉพาะอย่างยิ่งบนจอภาพขนาดใหญ่หรือระบบหน้าจอคู่ที่จับหน้าต่าง wxGUI อาจเป็นเรื่องที่น่าเบื่อหน่ายเมื่อปรากฏบนจอภาพแยกกัน (ขึ้นอยู่กับตัวจัดการหน้าต่าง KDE ที่ใช้กันมากโดยทั่วไปจะกระจายหน้าต่าง wxGUI ทั่วพื้นที่หน้าจอ) เกือบทุกงานจะสร้างหน้าต่าง wxGUI ใหม่ซึ่งลอยอยู่รอบๆ หน้าจออย่างอิสระ: ตัวอย่างที่ 1 และตัวอย่างที่ 2 บนหน้าจอคู่ อาจรวมระยะทางได้ถึง 50 ซม.

      • ดำเนินการ ไม่จำเป็น เลย์เอาต์ที่คล้ายกับ QGIS (โดยมีคำอธิบายติดอยู่กับจอแสดงผลแต่ละจอ) หรือ GSDView เป็นต้น) (ดูรูปด้านล่าง)
      • ดำเนินการ ไม่จำเป็น การเทียบท่าแม่เหล็กของตัวจัดการเลเยอร์และหน้าต่างแสดงผลเพื่อให้หน้าต่างอยู่ใกล้ขึ้น
      • ไม่อนุญาตให้หน้าต่างโมดูลเปิดค้างอยู่ นั่นคือ กำจัดปุ่มปรับใช้และบังคับปิดแต่ละหน้าต่างเมื่อกดตกลง (วิธี QGIS/ArcGIS) เหลือเพียงจอแสดงผลและตัวจัดการตำนาน/เลเยอร์เดียวบนเดสก์ท็อป
      • หากคุณต้องการใช้ WM ปัจจุบันของคุณต่อไป ให้ยื่นรายงานข้อบกพร่องกับพวกเขาเพื่อขอการสนับสนุนแบบหลายหัวที่ดีกว่าและแก้ไขปัญหาที่ต้นทาง (อาจมีข้อผิดพลาดพร้อมคำแนะนำอยู่แล้ว)

      โซลูชันใหม่: ดู WxGUI#Data_Catalog ด้านบน

      สิ่งที่คนอื่นทำ

      SDI: (แต่ละเอกสารที่เปิดในแอปพลิเคชันตรงบริเวณหน้าต่างบนเดสก์ท็อป)

      • GRASS: หน้าต่างแสดงผลสำหรับแต่ละเอกสาร (เช่น ชุดของแผนที่ที่แสดง) เปิดบนเดสก์ท็อป หน้าต่างตัวจัดการคำอธิบาย/เลเยอร์หนึ่งหน้าต่างสำหรับหน้าต่างแสดงผลทั้งหมด  แต่ละโมดูล/ฟังก์ชันจะเปิดหน้าต่างแยกต่างหากบนเดสก์ท็อป
      • QGIS: หน้าต่างแสดงผลสำหรับแต่ละเอกสาร (เช่น ชุดของแผนที่ที่แสดง) ที่เปิดอยู่บนหน้าต่างตัวจัดการคำอธิบาย/เลเยอร์ของเดสก์ท็อปที่แนบมากับหน้าต่างแสดงผลแต่ละหน้าต่าง แต่ละโมดูล/ฟังก์ชันจะเปิดหน้าต่างแยกต่างหากบนเดสก์ท็อป (เช่น http://grass.osgeo org/grass61/screenshots/images/qgis08_grass6_toolbox.png)
      • ArcGIS: คล้ายกับ QGIS ที่มีคำอธิบาย/การแสดงผลรวมสำหรับแต่ละเอกสาร (ชุดของแผนที่ที่แสดง) แต่ละโมดูล/ฟังก์ชันจะเปิดหน้าต่างแยกต่างหากบนเดสก์ท็อป (เช่น http://upload.wikimedia.org/wikipedia/en/9/92/ ArcMap.jpg)
      • MapInfo (ก่อน Pitney Bowes): เอกสารแต่ละฉบับจะเปิดหน้าต่างแสดงแผนที่บนเดสก์ท็อป คำอธิบาย/กล่องเครื่องมือเดียวที่เปิดบนเดสก์ท็อปจะควบคุมเอกสารที่มองเห็นได้ทั้งหมด (เช่น การแสดงแผนที่) แต่ละโมดูล/ฟังก์ชันจะเปิดหน้าต่างแยกต่างหากบนเดสก์ท็อป (คล้ายกับปัจจุบัน เค้าโครงหญ้า)

      MDI: (เปิดเฟรมเดียวสำหรับแอปพลิเคชันบนเดสก์ท็อป เอกสารทั้งหมดที่เปิดอยู่ภายในกรอบแอปพลิเคชัน)


      ดูวิดีโอ: Using Grass GIS in QGIS