มีวิธีในการเรนเดอร์เส้นโค้ง (เบซิเยร์) ใน QGIS หรือไม่?


33

ฉันย้ายจากการสร้างแผนที่ด้วย Illustrator เพื่อทำให้เป็น QGIS และข้อมูลจริง สิ่งหนึ่งที่ฉันไม่สามารถสร้างขึ้นใหม่ใน QGIS คือเส้นโค้งที่เรียบเนียนที่ฉันสามารถรับได้ใน Illustrator ฉันไม่ได้พูดเกี่ยวกับลักษณะการเข้าร่วมและรูปแบบหมวก แต่จะแสดงผลทั้งบรรทัดได้อย่างไร

ฉันกำลังมองหาคำตอบที่ไม่รวมการส่งออกเป็น SVG ไปยัง Illustrator และทำแผนที่ให้สำเร็จ

นอกจากนี้ฉันรู้ว่าพวกเขาอาจถูกมองว่าเป็นตัวแทนที่ไม่ถูกต้อง แต่ส่วนใหญ่แผนที่เหล่านี้มีไว้เพื่อให้ผู้ขับขี่ทราบว่าพวกเขาอยู่ที่ไหนและไม่จำเป็นต้องเป็นตัวแทนที่แน่นอน

นี่คือตัวอย่างของสิ่งที่ฉันหมายถึง: ป้อนคำอธิบายรูปภาพที่นี่


2
ข้อมูลของคุณเก็บไว้เป็นอย่างไร? รูปแบบข้อมูลส่วนใหญ่ (เช่น shapefile) ไม่อนุญาตให้ใช้ส่วนโค้ง ฉันเชื่อว่าฐานข้อมูลบางอย่างในขณะนี้ทำ
Darren Cope

คำตอบ:


24

ลองใช้ปลั๊กอิน Generalizer มันควรจะทำในสิ่งที่คุณต้องการ ปลั๊กอินมีตัวเลือกการปรับให้เรียบซึ่งทำงานได้ค่อนข้างดี

มันไม่ได้เปลี่ยนวิธีการแสดงผลของคุณ แต่จะสร้างรูปร่างไฟล์ใหม่โดยใช้การปรับให้เรียบ

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


ฉันไม่พบปลั๊กอินนี้สำหรับ QGIS 1.7.3 แม้ว่าฉันเปิดใช้งาน repos ของบุคคลที่สาม คุณสามารถแสดงวิธีเปิด / ค้นหาได้อย่างไร ดูน่าสนใจและตรงไปตรงมา
SaultDon

3
แปลก. ควรอยู่ในตัวติดตั้งปลั๊กอินเนื่องจากมาจาก repo plugin ของ QGIS หลัก
Nathan W

3
คุณพูดถูก แต่จากตัวติดตั้งปลั๊กอิน Python ฉันต้องไปที่แท็บตัวเลือกและเปลี่ยน "ปลั๊กอินที่อนุญาต" เป็น: "แสดงปลั๊กอินทั้งหมดแม้จะถูกทำเครื่องหมายเป็นทดลอง"
SaultDon

ฉันลงเอยด้วยการเล่นกับปลั๊กอินนี้คืนนี้เล็กน้อยและมันใช้ได้ดีกว่าสำหรับฉันจริง ๆ เพราะฉันไม่ต้องใช้เลเยอร์ GRASS และสามารถแปลงไฟล์รูปร่างปัจจุบันของฉันได้
Brian Kelly

ฉันต้องทำสองขั้นตอนสำหรับการทำข้อมูลดิจิทัลให้ละเอียด แต่ขรุขระ: ขั้นแรกลดความซับซ้อน (เช่นอัลกอริธึม Lang) แล้วปรับให้เรียบ ทำงานรักษา
ben ben

16

ใช้ปลั๊กอิน QGIS + GRASS:

เพิ่มแถบเครื่องมือ Grass จากหน้าต่าง "Manage Plugins" เพิ่มปลั๊กอินเครื่องมือหญ้าเพื่อ qgis

เส้นของคุณจะต้องเป็นหญ้าเวกเตอร์ดังนั้นแปลงเป็นแผนที่ GRASS ใหม่หรือที่มีอยู่

จากแถบเครื่องมือ GRASS เลือกเครื่องมือ GRASS ... ป้อนคำอธิบายรูปภาพที่นี่

มองหาโมดูล: v.generalize ( WIKI tutorial ที่นี่ )

จากนั้นคุณสามารถเลือกอัลกอริทึมการวางหลักเกณฑ์ทั่วไปที่แตกต่างกันได้ เครื่องมือ GRASS v.generalize การเลือกอัลกอริทึม

สังเกตอัลกอริทึม: Chaiken, Hermite หรือแม้แต่เลื่อนค่าเฉลี่ย มีอีกหลายคนเช่นกัน!

ความแตกต่างสามารถเห็นได้ในภาพ wiki: v.generalize ทำให้ความแตกต่างง่ายขึ้นตัวอย่าง

จาก Wiki: "สังเกตว่าความแตกต่างระหว่าง" Chaiken "และ" Hermite "คือเส้นที่ผลิตโดย" Chaiken "" inscribe "บรรทัดเดิมในขณะที่" Hermite "บรรทัด" จำกัด "เส้นเดิมที่สามารถเห็นได้ใน รูปภาพ [ด้านบน]. (เส้นสีดำเป็นเส้นดั้งเดิม, เส้นสีเขียวคือ "Chaiken" และสีน้ำเงินคือ "Hermite")


ใช้ uDig + jgrasstools หรือ grass:

หากคุณมีปัญหาในการได้รับผลเป็นที่น่าพอใจจาก v.generalize GRASS ลองรุ่นล่าสุดของuDigกับjgrasstools คุณยังสามารถคว้าโถหญ้าจากที่เดียวกับ jgrasstools

เมื่อติดตั้งและใช้งาน uDig แล้วให้เปิดใช้งานSpatial Toolbox : หน้าต่าง> แสดงมุมมอง> อื่น ๆ ... เปิดใช้งานกล่องเครื่องมือเชิงพื้นที่ใน uDig

ยกเลิกการย้ายแถบเครื่องมือเพื่อให้อ่านง่ายขึ้น (คลิกขวาที่แท็บ Spatial Toolbox> Detach ... ): กำลังแยกกล่องเครื่องมือเชิงพื้นที่ใน uDig

โหลดโมดูล jgrasstools และ grass (ตัวเลือก) ที่ต้องการ: กำลังโหลด jgrasstools / grass เข้าสู่ udig

อย่าลืมตั้งค่า grass ของคุณ (ชี้ไปที่ grass ที่สามารถเรียกทำงานหรือไฟล์ bat บน windows หรือคำสั่ง grass ใน linux เช่น / usr / bin / grass) หากคุณโหลดไฟล์ grass jar ด้วย: การตั้งค่าพารามิเตอร์หญ้าใน uDig

ที่สุด! การใช้เครื่องมือจาก jgrasstools (ไม่ใช่หญ้า) คุณสามารถทำให้เส้นทั่วไปง่ายขึ้นด้วยการประมวลผลแบบเวกเตอร์> LineSmootherJaiTools การประมวลผลเวกเตอร์เป็น LineSmootherJaiTools ใน uDig

ตรวจสอบให้แน่ใจว่าได้ตั้งค่าอินพุตและเอาต์พุตอย่างถูกต้อง(ใช้ได้กับ Shapefiles เท่านั้นดังนั้นไม่จำเป็นต้องแปลงข้อมูลของคุณเป็น mapsets / location สำหรับหญ้า) : การตั้งค่าอินพุทและเอาท์พุทสำหรับกล่องเครื่องมือเชิงพื้นที่ใน uDig

เมื่อตั้งค่าความทนทานต่อการปรับให้เรียบ (0.0 - 1.0) และอินพุต / เอาต์พุตแล้วให้กดปุ่ม Play บนหน้าต่าง Spatial Toolbox window (บนขวา): เล่นโมดูลใน Spatial Toolbox สำหรับ uDig

ผล:
uDig ทำให้ผลลัพธ์ jgrasstools ง่ายขึ้น ...


สิ่งนี้เปลี่ยนแปลงข้อมูลต้นฉบับหรือกรองข้อมูลก่อนที่ QGIS จะแสดงผลหรือไม่?
Brian Kelly

อ่านั่นคือคำตอบที่นี่: "(เส้น) การปรับให้เรียบเป็นกระบวนการ" ย้อนกลับ "ซึ่งใช้เป็นอินพุตบรรทัดและสร้างความเรียบเนียนโดยประมาณของต้นฉบับในบางกรณีนี่คือความสำเร็จโดยการแทรกจุดยอดใหม่ลงในบรรทัดเดิมและ สามารถรวมได้ถึง 4,000% ของจำนวนจุดยอดในต้นฉบับในกรณีเช่นนี้มันเป็นความคิดที่ดีเสมอที่จะทำให้เส้นหลังง่ายขึ้น " จากgrass.osgeo.org/grass64/manuals/html64_user/v.generalize.html
Brian Kelly

ดังนั้นดูเหมือนว่านี่คือสิ่งที่คุณน่าจะนำไปใช้เมื่อคุณยืนยันว่าบรรทัดของคุณถูกต้องและไม่จำเป็นต้องแก้ไขเพิ่มเติม (เว้นแต่คุณต้องการปรับเวกเตอร์เพิ่มเติมทั้งหมดแล้วทำให้เรียบอีกครั้ง)
Brian Kelly

@spline ใช่แล้วเพราะคุณต้องทำงานกับ "ชุดข้อมูล grass" ซึ่งเป็นหลัก - ไม่ใช่ shapefile คุณต้องการให้แน่ใจว่า shapefile ดั้งเดิมสมบูรณ์ การทำให้เส้นตรงง่ายขึ้นเพื่อกำจัดจุดยอดพิเศษเป็นตัวเลือกเช่นกันขึ้นอยู่กับว่าเส้นนั้นยาวแค่ไหนและปริมาณของจุดยอดที่ปรากฏในเส้นโค้งเบซิเยร์
SaultDon

โอ้คำพูดของฉันหญ้าไม่สมเหตุสมผลสำหรับฉัน ... ชื่อแผนที่ชื่อสถานที่ฐานข้อมูลถาวร ... ฉันพยายามที่จะ 'ค้นพบ' วิธีใช้คำตอบนี้ (โดยไม่ยอมรับความรู้เดิมเกี่ยวกับหญ้า) และล้มเหลวอย่างน่าสังเวช ไฟล์ดูเหมือนจะไปในที่ที่คุณคาดหวังน้อยที่สุด (ฉันเดาว่ามันไม่ใช่ไฟล์?) ฉันไม่สามารถเลือกเลเยอร์ที่แปลงแล้วของฉันในกล่องโต้ตอบทั่วไปหลังจากสุดท้ายค้นหาวิธีเลือกแผนที่ (ไม่ใช่ว่าฉันรู้ว่ามีความหมายอย่างไร แผนที่) ... ฝันร้าย หน้าตาสินค้าถ้าฉันสามารถทำงานออกทั้งหมดแม้ว่า :)
ที่แตกต่างกันเบน

1

มีวิธีอื่นอาจเป็นไปได้ว่าวิธีนี้มีเฉพาะตั้งแต่รุ่น QGIS 2.0:

ภายใต้การประมวลผล> กล่องเครื่องมือคุณสามารถเข้าถึงเครื่องมือ GRASS และ SAGA สำหรับการทำให้เรียบคุณจะพบ v.generalize แต่ก็มีการทำให้เส้นเรียบง่ายจาก SAGA เครื่องมือเหล่านี้ทำงานกับรูปร่างที่เป็นปกติดังนั้นไม่จำเป็นต้องใช้เวกเตอร์หญ้า:

ป้อนคำอธิบายรูปภาพที่นี่

โหมดแบทช์ยังไม่ได้รับการแก้ไขที่ดี (คลิกขวาที่เมนูทางขวาแล้วเลือก "ดำเนินการเป็นแบทช์" เนื่องจากต้องเลือกไฟล์ทุกไฟล์ด้วยตนเองปลั๊กอิน Generalizer ที่กล่าวถึงข้างต้นช่วยให้คุณสามารถเลือกไฟล์ได้ง่ายขึ้น แต่ตอนนี้ใช้ได้เฉพาะในกรณีที่ไม่มีไฟล์ที่จะบันทึกมิฉะนั้นปลั๊กอินจะล่ม


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