การสร้างบริการการทำแผนที่เว็บ / การเรียงแผนที่ขนาดเล็ก


26

ฉันกำลังมองหาวิธีขนาดเล็กและวิธีง่ายๆในการนำเสนอรูปร่างหลายเหลี่ยมแบบออนไลน์อย่างน้อยหนึ่งรูปแบบ (บนเว็บไซต์เทศบาลที่ไม่มีโครงสร้างพื้นฐานของเซิร์ฟเวอร์แผนที่ที่มีอยู่เพื่อความแม่นยำ) ตอนนี้ฉันทำงานทั้งหมดกับ QGIS และฉันต้องการที่จะคงโอเพนซอร์ซทั้งหมดไว้ (ไม่มีงบประมาณเหลือสำหรับการลงทุนซอฟต์แวร์ขนาดใหญ่)

การค้นคว้าหัวข้อนี้ส่งผลให้มีแนวทางที่เป็นไปได้จำนวนมากและทำให้ฉันค่อนข้างสับสน สิ่งที่ฉันกำลังมองหาคือ

  • ความสามารถในการแสดงรูปหลายเหลี่ยมที่จัดหมวดหมู่ในแผนที่เฉพาะเรื่อง (- ถ้าเป็นไปได้จะเป็นการดีถ้าได้รับป๊อปอัปหรือสามารถดึงข้อมูลแอททริบิวได้
  • ฉันต้องการทำงานส่วนใหญ่ (จัดแต่งทรงผมและอื่น ๆ ) ใน QGIS
  • OSM เป็นแผนที่ฐานจะดีอย่างสมบูรณ์

ป่านนี้แผนที่แบบกำหนดเองบนแผนที่พื้นฐาน OSM ดูเหมือนว่าฉันกำลังมองหา (หรือมีทางออกที่ดีกว่า)? อะไรจะเป็นวิธีที่ดีที่สุดในการสร้างกระเบื้องเหล่านี้


2
มันจะต้องเป็นโซลูชั่นแบบ Raster (เว็บไทล์) หรือไม่? มันจะโอเคสำหรับการแก้ปัญหาเวกเตอร์หรือไม่?
Mapperz

ไม่เลย. ฉันเพิ่งคิดว่ามันจะเป็นวิธีที่ง่ายที่สุด (สร้างไทล์สร้าง index.htm หรือ code block เพื่อวางลงในเว็บเพจที่มีอยู่คัดลอกไปยังไดเรกทอรีของเซิร์ฟเวอร์เสร็จแล้ว) ฉันทำงานกับ GMapCreator หนึ่งครั้งก่อนในโครงการส่วนตัวและมันเป็นวิธีที่รวดเร็วในการทำสิ่งต่างๆให้สำเร็จ
SAnderka

คุณมีรูปหลายเหลี่ยมในไฟล์รูปร่างของคุณหรือไม่ หากมีค่าต่ำกว่า 1,000 อาจเป็นความเห็นของ @ Mapperz ในโซลูชันเวกเตอร์ซึ่งเป็นวิธีที่จะดำเนินการ ทางออกที่ง่ายที่สุดคือการใช้ Google Maps API เพื่อวาดรูปหลายเหลี่ยมและสร้างหน้าต่างป๊อปอัพข้อมูล - ไม่จำเป็นต้องสร้างและจัดเก็บภาพที่ไม่ต้องมีการโต้ตอบ รูปภาพแบบเรียงต่อกันของแผนที่เหมาะสำหรับข้อมูลที่มีความหนาแน่นสูงเช่นการแสดงภาพถ่ายจากดาวเทียมถนนหรือขอบเขตการสำรวจสำมะโนประชากร
b_dev

คำตอบ:


13

สำหรับวิธีง่ายๆในการเริ่มต้นด้วย QGIS คุณสามารถใช้QGIS Mapserverซึ่งสามารถให้บริการแผนที่ที่คุณออกแบบโดยใช้อินเตอร์เฟส QGIS ปกติ หรือคุณอาจต้องการใช้GeoServerซึ่งเป็น Java และอาจติดตั้งได้ง่ายกว่า เนื่องจากทั้งสองโปรแกรมให้บริการแผนที่โดยใช้มาตรฐานแบบเปิดหากคุณเริ่มต้นด้วยหนึ่งและต้องเปลี่ยนในภายหลังจึงไม่จำเป็นต้องเปลี่ยนไคลเอนต์

เมื่อคุณติดตั้งระบบเพื่อแสดงแผนที่ WMS คุณจะต้องมีส่วนหน้าของลูกค้า ฉันแนะนำOpenLayersเพราะมันค่อนข้างง่ายในการเริ่มต้นและขยายได้อย่างง่ายดาย มันจัดการกับกระเบื้อง WMS, WMST และ OSM โดยไม่มีปัญหา

ในที่สุดคุณอาจต้องย้ายไปที่ไทล์สำหรับเลเยอร์ WMS ของคุณ (กล่าวว่าคุณเริ่มได้รับมากกว่า 50-100 คำขอต่อนาทีบนฮาร์ดแวร์ที่เหมาะสม) จากนั้นคุณจะต้องดูที่วางแคชไทล์ไว้ด้านหน้าเซิร์ฟเวอร์แผนที่ หากคุณใช้ GeoServer แล้วคุณสามารถใช้ GeoWebCache ซึ่งถูกสร้างขึ้นในหรือคุณอาจจะใช้TileCache


ปัญหาของฉันคือฉันทำงานเป็นที่ปรึกษาอิสระภายในเทศบาลในขณะนี้ พนักงานไอทีในพื้นที่ค่อนข้างหนาและพยายามที่จะป้องกันโอเพนซอร์ซที่น่าสงสัยทุกประเภทจากเครื่องของพวกเขา ดังนั้นฉันจึงต้องการหลีกเลี่ยงการแก้ปัญหาใด ๆ ที่จำเป็นต้องติดตั้งเป็น "ซอฟต์แวร์" ในพื้นที่เว็บของเทศบาล
SAnderka

ทางออกในฝันของฉันจะเป็นสิ่งที่ฉันสามารถเตรียมได้ด้วยตัวเองและเพียงแค่คัดลอกไปยังพื้นที่เว็บของพวกเขาแทรกใน html / JS-code และทำได้ ไม่ว่าจะเป็นข้อมูลแรสเตอร์หรือเวกเตอร์จะไม่นับรวมในท้ายที่สุด ฉันเป็นเพียงคนเดียวที่เข้าใจถึงความแตกต่างทางเทคนิคต่อไป ... และทุกคนอื่นก็สนใจที่จะนำเสนอข้อมูลของเราให้กับประชาชน
SAnderka

1
คุณต้องอธิบายให้พวกเขาฟังว่าการแมปเว็บไม่ใช่สิ่งที่คุณสามารถทำได้อย่างง่ายดายโดยไม่ต้องใช้ซอฟต์แวร์ แน่นอนว่าคุณสามารถโยนไพ่แบบง่าย ๆ บนเว็บเซิร์ฟเวอร์ แต่มันจะไม่ดูดีในทุกระดับมันยากที่จะรักษาและยากที่จะเพิ่มคุณสมบัติเมื่อนายกเทศมนตรีต้องการมากขึ้น
Ian Turton

ดังนั้นฉันจึงดู Geoserver (เป็นส่วนหนึ่งของแพ็คเกจ Open Geo Suite) และมันก็ดูค่อนข้างดี ฉันนำเข้า shapefile ของฉันเรียกมันว่าแม้จะมีการแสดงตัวอย่างทำงานบน localhost แต่ฉันจะนำแผนที่เหล่านี้มาออนไลน์บน webspace ได้อย่างไร ฉันพลาดอะไรไปรึเปล่า? เห็นได้ชัดว่าคั่นหน้า ฯลฯ ไม่ทำงานเนื่องจากพวกเขาอ้างถึงฮาร์ดไดรฟ์ในพื้นที่ ฉันทำงานผ่านบทช่วยสอนที่เป็นไปได้ทั้งหมดและวิธีการ แต่หัวข้อนั้นไม่เคยมีการพูดคุยกัน? ใครช่วยชี้ฉันในทิศทางที่ถูกต้องได้ไหม
SAnderka

คุณวาง GeoServer บนเว็บเซิร์ฟเวอร์ของคุณและคัดลอกไดเรกทอรีข้อมูลจากเครื่องท้องถิ่นของคุณไปยังเครื่องระยะไกล
Ian Turton

8

ความสามารถในการแสดงรูปหลายเหลี่ยมที่จัดหมวดหมู่ในแผนที่เฉพาะเรื่อง (- ถ้าเป็นไปได้จะเป็นการดีถ้าได้รับป๊อปอัปหรือสามารถดึงข้อมูลแอททริบิวได้

ฉันต้องการทำงานส่วนใหญ่ (จัดแต่งทรงผมและอื่น ๆ ) ใน QGIS

OSM เป็นแผนที่ฐานจะดีอย่างสมบูรณ์

ทั้งหมดนี้สามารถทำได้ภายใน QGIS และogr2layersปลั๊กอิน เวิร์กโฟลว์นั้นง่าย:

  1. จัดรูปแบบข้อมูลของคุณใน QGIS ใช้สัญลักษณ์เก่าที่ฉันมีปัญหากับNew Symbologyเมื่อใช้งานogr2layersปลั๊กอิน

  2. เรียกใช้ogr2layersปลั๊กอินและกำหนดการตั้งค่า openlayers (เช่นขนาดแผนที่, การควบคุมแผนที่, แผนที่, ฯลฯ ) นี่จะสร้างไดเรกทอรีที่มีindex.htmlและชั้นข้อมูลของคุณถูกแปลงเป็นgeojsonไฟล์

  3. อัปโหลดไดเรกทอรีไปยังเว็บเซิร์ฟเวอร์

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


1
Simple webmap หมายถึงมันยังคงซูมและเลื่อนได้ใช่ไหม ฟังดูเหมือนว่าฉันควรจะดูเมื่อฉันกลับไปที่ออฟฟิศของฉัน
SAnderka

1
ใช่ดูตัวอย่างนี้วิธีการdownload.essc.org.ph/wcsp2011_geo_workshop/และผลลัพธ์download.essc.org.ph/wcsp2011_geo_workshop/webmap/eagle_webmap
maning

6

ตัวเลือกหนึ่งคือTileMill - มันสนับสนุนการปูกระเบื้อง, การปฏิสัมพันธ์และการทำแผนที่ในง่ายต่อการใช้อินเตอร์เฟซบนเว็บรวมทั้งคำจำกัดความสไตล์ในภาษาโปร CSS เรียกว่าcascadenik ใช้ TileMill คุณสามารถเหวี่ยงออกmbtilesไฟล์ที่สามารถบริโภคได้กับสิ่งที่ต้องการTileStream ที่กล่าวว่ายังมีลูกเล่นบางอย่างในการปรับใช้เอาต์พุตที่แมป แต่นี่จะให้แพลตฟอร์มที่ดีสำหรับการสร้างไทล์คุณภาพสูง


ดูวิดีโอตัวอย่างของพวกเขาในหน้าแรกมันน่าประทับใจมาก!
joshdoe

6

ฉันตัดสินใจที่จะให้ข้อมูลบางอย่างเกี่ยวกับวิธีการที่ฉันไปใช้บริการแผนที่แบบเรียงต่อกัน JavaScript และ GeoJSONs ล้วนไม่ใช่วิธีแก้ปัญหาเพราะฉันต้องจัดการรูปหลายเหลี่ยม 40k และจุด 33k โดยประมาณ ดังนั้นฉันจึงไปปูกระเบื้อง โอ้และฉันยังไม่สามารถเข้าถึงเซิร์ฟเวอร์รูทดังนั้นฉันจึงไม่สามารถตั้งค่า GeoServer หรือสิ่งที่คล้ายกันได้ (จะไม่เป็นไปได้ทางการเงินสำหรับลูกค้ารายเดียวในขณะนี้)

หลังจากการค้นคว้าและอ่านหนังสือในที่สุดฉันก็ตัดสินด้วย OpenLayers (หลังจากการแสดงด้วย GMaps) หนังสือยอดเยี่ยมของ Eric Hazzard "OpenLayers 2.10" (Packt Publishing, 2011) จริงๆช่วยฉันได้มากเพราะมันครอบคลุมพื้นฐาน JavaScript และเคล็ดลับการดีบัก

แน่นอนว่าข้อมูลเวกเตอร์ทั้งหมดของฉันทำงานใน QGIS แน่นอนว่าเป็นวิธีที่จะไปหาคนทำงานอิสระขนาดเล็กอย่างฉัน (ฉันรู้เรื่อง ArcGIS จากมหาวิทยาลัยบ้าง แต่ QGIS ได้นำเสนอทุกอย่างที่ฉันต้องการ)

จัดแต่งทรงผมแผนที่และสร้างกระเบื้องเป็นความท้าทายที่ยิ่งใหญ่ ก่อนอื่นฉันไปพร้อมกับ " GMapCreator " โดย CASA แต่การฝังรูปร่างหลาย ๆ ไฟล์พิสูจน์แล้วว่าน่าเบื่อ (ฉันต้องให้ข้อมูลจุดผ่านรูปหลายเหลี่ยมจากนั้นเส้นเขตเทศบาลล้อมรอบทุกอย่าง) เป็นไปได้อย่างยิ่งที่จะทำเช่นนี้ใน GMapsCreator (และฉันทำเพื่อแสดงเวที) แต่ใช้เวลา 3 รอบการแสดงผลเต็มรูปแบบ (ครั้งแรกที่คุณสร้างไทล์จากนั้นไทล์ที่มีอยู่จะได้รับ "โอเวอร์" ด้วยคุณสมบัติในภายหลัง เป็นสิ่งสำคัญ!) และเมนูจัดแต่งทรงผมมีขนาดใหญ่และสับสนเล็กน้อย การบันทึกแผนที่ของคุณและการแก้ไขในภายหลังก็เป็นปัญหาที่ซับซ้อนเช่นกัน

TileMillดูมีแนวโน้มมากโดยเฉพาะสไตล์ CSS ของพวกเขาดังนั้นฉันจึงดูมัน น่าเสียดายที่มันเป็น Mac หรือ Linux เท่านั้นดังนั้นอาจทำให้บางคนกลัว ฉันชอบสิ่งที่ฉันเห็นจริงๆดังนั้นฉันจึงตั้งค่าพาร์ติชัน Ubuntu บนฮาร์ดไดรฟ์ดาวน์โหลดและออกแบบแผนที่ของฉัน เอกสารเกี่ยวกับไวยากรณ์การกำหนดรูปแบบบางครั้งก็หายากเล็กน้อย แต่การดูวิดีโอตัวอย่าง (ลิงก์บนเว็บไซต์หลัก) จะตอบได้เกือบทุกอย่าง เป็นไปได้ที่จะทำบางสิ่งที่น่าสนใจด้วยสไตล์ที่ซ้อนกันและ / หรือมีเงื่อนไขและความเข้าใจ CSS พื้นฐานบางอย่างควรนำคุณไปยังที่ที่คุณต้องการ

ในท้ายที่สุด TileMill จะสร้างไฟล์ * .mbtiles ที่ดีเพียงไฟล์เดียว ฉันไม่คิดว่ามีวิธีการโดยตรงแสดงเหล่านี้ใน OpenLayers (อย่างน้อยฉันไม่สามารถหาหนึ่ง?) ดังนั้นจึงเป็นเวลาที่จะใช้เครื่องมืออื่น: mbutil เครื่องมือนี้ "คลายซิป" ไฟล์ mbtiles ในโครงสร้างโฟลเดอร์ปกติที่มี pngs ที่เรียงต่อกันของข้อมูลของฉันในระดับการซูมที่เลือก

ในที่สุดฉันอัปโหลดไฟล์เหล่านี้ไปยัง FTP-Server ของฉันอ่านอย่างหนักใน OL เพื่อให้ webmap ของฉันทำงานต่อเนื่อง (คุณเพิ่มไทล์ที่สร้างขึ้นเป็นเลเยอร์ TMS แต่การเดา URL แหล่งที่มาและเลเยอร์ที่ถูกต้องใช้เวลาและ googling) จากนั้นเขียนไปหลายชั่วโมงโดยเล่นซอกับปัญหา HTML / CSS พื้นฐาน ฉันต้องการแผนที่ความกว้าง / ความสูง 100% ที่มีตำนานลอยตามแนวทาง "เอกลักษณ์" ของลูกค้า (เป็นเทศบาลตามที่กล่าวไว้) ลูกค้าของฉัน

โอ้และจนถึงตอนนี้ฉันใช้ Google Maps เป็นเลเยอร์ฐาน แต่อาจถูกแทนที่ด้วยรูปภาพทางอากาศที่กำหนดเองที่ให้บริการผ่าน WMS (ไม่ได้จัดทำโดยฉัน แต่เป็นแบบสำรวจของรัฐและการบริหารข้อมูลภูมิศาสตร์)

ฉันหวังว่าฉันจะไม่ลืมสิ่งที่สำคัญ แต่ถ้าฉันได้โปรดอย่าลังเลที่จะถาม! ฉันจะตรวจสอบหัวข้อนี้เป็นครั้งคราว


ขณะนี้ Tilemill พร้อมใช้งานสำหรับ Windows ด้วย นอกจากนี้ยังมีเธรดล่าสุดในรายการส่งเมลของผู้ใช้ Openlayersเกี่ยวกับการใช้ mbtiles เป็นแหล่งข้อมูล (ยังไม่ได้ลอง)
matt wilkie

อ่าขอบคุณมากที่รู้ ต้องลองแน่นอนว่ามันน่ารำคาญนิดหน่อยที่จะสลับไปมาระหว่าง win7 และ Ubuntu ตลอดเวลา
SAnderka

3

หากคุณมีโพลิกอนน้อยกว่า 1,000 รูปให้พิจารณาความคิดเห็นของ @ Mapperz เกี่ยวกับโซลูชันเวกเตอร์ - ไม่จำเป็นต้องสร้างและจัดเก็บรูปภาพที่ไม่ใช่แบบโต้ตอบหากคุณมีรูปหลายเหลี่ยมเพียงไม่กี่รูป

ภาพที่เรียงกันเป็นภาพที่ดีที่สุดสำหรับข้อมูลที่มีความหนาแน่นสูงเช่นการแสดงภาพถ่ายจากดาวเทียม, ถนนหรือรูปหลายเหลี่ยมในการสำรวจสำมะโนประชากร 50,000 รูป

ทางออกที่ง่ายที่สุดสำหรับรูปหลายเหลี่ยมขนาดเล็กคือการแปลงรูปร่างไฟล์เป็น KML และอัปโหลดไปยัง Google My Maps

หากคุณใช้รหัสใน Javascript โซลูชันแบบโต้ตอบส่วนใหญ่คือ Google Maps API (หรือ OpenLayers) เพื่อวาดรูปหลายเหลี่ยมและสร้างหน้าต่างป๊อปอัปข้อมูล คุณสามารถเริ่มต้นด้วยการแปลง shapefile polygons โดยใช้ไลบรารี GDAL เป็นไฟล์ geoJSON (วิธี Javascript ในการจัดเก็บข้อมูลทางภูมิศาสตร์)

หรือถ้าคุณไปตามเส้นทางของกระเบื้องคุณสามารถเก็บไทล์บน Amazons หรือคลาวด์ของ Google ได้โดยไม่ต้องยุ่งยาก

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

โชคดี!


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

1

ฉันรู้สึกว่าคุณเป็นคู่หูเพราะ ive ทำงานอย่างช้า ๆ เพื่อหาข้อสรุปเดียวกัน หลังจากเรียนรู้ QGIS ฉันลอง quantamnik และ mapnik แต่ในขณะที่มันจะทำการจัดแต่งทรงผม qgis เป็นการเดินทางทางเดียวและระบบจัดแต่งทรงผมไม่ได้มีค่า 1 ต่อ 1 ดังนั้นคุณต้องเรียนรู้การจัดแต่งทรงผมของ mapnik ต่อไป ฉันคาดเดาว่าเช่นเดียวกันกับฟังก์ชั่นการส่งออก qgis mapserver ดูเหมือนจะไม่เป็น "วิธีที่ง่าย" ในการเพิ่มประสิทธิภาพให้กับ mapserver เพียงแค่จอบและใช้เวลามากมาย

Mapnik, geoserver, mapserver ดูเหมือนว่าจะมีผู้ชื่นชอบแต่ละคน แต่ mapserver นั้นดูเหมือนจะเป็นถนนสายกลาง

ต้องบอกว่ามีหนึ่งทางลัดที่ฉันพบและนั่นคือ qgis มีตัวเลือกบรรทัดคำสั่งเพื่อ rasterize แผนที่ qgis เพื่อความละเอียดและขอบเขตของการเลือกของคุณและสร้าง worldfile ด้วยวิธีนี้คุณสามารถใช้ maptiler หรือ gdal2tiles เพื่อไทล์หนึ่งชั้นในเวลา จะไม่ดีสำหรับการซูม 20 ระดับอย่างชัดเจนและฉันไม่รู้ว่าขีด จำกัด ขนาดสูงสุด png คืออะไร


2
QGIS MapServer แตกต่างจาก MapServer
Ian Turton

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