จะเกิดอะไรขึ้นถ้า KML ของเราใหญ่เกินไป / ซับซ้อนเกินไปสำหรับ Google Maps API [ปิด]


29

แอปพลิเคชันเว็บของเรามีความสามารถในการทำแผนที่อย่างง่าย (ปัจจุบันเป็นเพียงเครื่องหมายและการวางซ้อน KML บน Google Map แบบฝัง) มันใช้งานได้ดีทีเดียว ใบหน้าจริงเท่านั้นข้อ จำกัด เราเป็นภาพซ้อนทับ KML ที่นอกเหนือไปจากของ Google ขนาดและความซับซ้อนของข้อ จำกัด สำหรับ KML

เรากำลังพิจารณาที่จะตั้งค่าเซิร์ฟเวอร์ของเราเอง (เช่น GeoServer หรือ ArcGIS Server) แต่ดูเหมือนว่าจะเป็นขั้นตอนใหญ่เพียงเพื่อแสดงผล (ตัวอย่าง) KML 15 MB เมื่อขีด จำกัด ของ Google คือ 10 MB

ฉันต้องการตรวจสอบสติ: มีบางอย่างตรงกลางระหว่าง API ฟรีและง่ายของ Google สำหรับการวางซ้อน KML และการตั้งค่าไทล์เซิร์ฟเวอร์ของตัวเองหรือไม่


5
แยก KML หนึ่งไฟล์เป็นไฟล์ KML ขนาดเล็ก 2 ไฟล์ - เปิดและปิดข้อมูลที่คุณไม่ต้องการ
Mapperz

1
ใช้ฟิวชั่นตารางเสริม (จำกัด แถว 100k หรือ 100mb ในข้อมูล) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/…ดูgroups.google.com/group/fusion-tables-users-group/browse_thread/?hl=th
Mapperz

@mapperz คุณสามารถอัปโหลดข้อมูลได้ครั้งละ 100MB เท่านั้น แต่คุณสามารถนำเข้าแถวเพิ่มเติมไปยังตารางเดียวกันได้สูงสุด 250MB ของพื้นที่จัดเก็บ
geographika

แม้ว่าฉันจะเห็นคุณรู้ว่าแล้ว .. gis.stackexchange.com/questions/6615/
geographika

บริการ Fusion Tables กำลังปิดตัวลงในวันที่ 3 ธันวาคม 2019 ดังนั้นตัวเลือกที่ฉันเห็นคือทำให้ไฟล์ kml เล็กลงด้วยซอฟต์แวร์ - เดสก์ท็อป QGIS นอกจากนี้ยังมีห้องสมุด qgis หลาม ฉันใช้เดสก์ท็อป QGIS พร้อมตัวเลือกลดความซับซ้อนของรูปทรงเรขาคณิตโดยใช้ 0.0005 จากนั้นฉันส่งออกเลเยอร์ที่สร้างขึ้นเป็น kml คุณสามารถทำสิ่งนี้เป็นงานแบ็ตช์ได้จากเมนูเดียวกัน จากนั้นคุณสามารถเปิดเลเยอร์ที่สร้างขึ้นทั้งหมดในโครงการที่แยกต่างหากและใช้คอนโซลภายในเดสก์ท็อป QGIS เพื่อแปลงไฟล์. shp ทั้งหมดเป็น. kml
makkasi

คำตอบ:


12

เนื่องจากคุณได้ลงทุนในการพัฒนา Google Maps แล้วฉันขอแนะนำให้คุณผลักดันข้อมูลทั้งหมดลงใน Google Fusion Tables ซึ่งสามารถแยกวิเคราะห์ลงบนแผนที่ในลักษณะที่คล้ายกับ KML ด้วยประสิทธิภาพที่เหลือเชื่อ (ดูแอป WNYC Fusion Tables ) พิจารณาว่าเป็นการอัปเกรดเป็น KML โดยไม่ต้องปรับเปลี่ยนส่วนหน้าอย่างมาก


ฉันคิดว่านี่เป็นความคิดที่ดีหากข้อมูลของคุณไม่ได้อยู่ในกำหนดการอัปเดต> 24 ชั่วโมง นี่คือสิ่งที่ Google เพิ่งบอกกับเรา (ถ้า kml ทำให้เบราว์เซอร์ช้าลงจะใช้ตารางฟิวชั่น) เพื่อทำเช่นนั้นฉันจะบอกว่านี่เป็นคำตอบที่ดีที่สุด
Steve

1
ขอบคุณสำหรับการชี้ให้เห็น Fusion Tables - อย่างใดสิ่งนี้ทำให้ฉันหมดความสนใจอย่างเด็ดขาด น่าเสียดายที่นี่อาจเป็นข้อมูลที่เปลี่ยนไปบ่อยครั้ง และข้อ จำกัด การจัดเก็บโดยรวม (250MB ต่อผู้ใช้) จะไม่ทำให้เราขยาย
สมุนไพร Caudill

2
โปรดทราบว่าบริการ Fusion Tables ทดลองกำลังปิดให้บริการ 3 ธันวาคม 2019
Jonas

12

คุณสามารถแยก KML ของคุณเป็นหลาย ๆ KML ด้วย Parent KML ที่อ้างอิง kmls ที่เล็กลง อย่างน้อยนี่จะทำให้ขนาดไฟล์ของคุณอยู่ในระดับที่น่านับถือและอนุญาตให้คุณอ้างอิงชุดข้อมูลที่มีขนาดใหญ่กว่าเป็น KML

จริง ๆ แล้ว KML นั้นดีสำหรับชุดข้อมูลขนาดเล็กที่มีคุณสมบัติเพียงเล็กน้อยและมีแอตทริบิวต์ที่เกี่ยวข้อง ฉันจะไม่เข้าไปใกล้มันเป็นแหล่งข้อมูลไฟล์ หากคุณกำลังดูไฟล์เหล่านี้ที่ใหญ่ขึ้นฉันจะดูประเภทข้อมูลอื่นหรือดูเส้นทาง GeoServer / MapServer เพื่อหาชุดข้อมูลแบบกระจาย


2
แต่ Network KML (พร้อม Superoverlays ออกแบบมาสำหรับชุดข้อมูลขนาดใหญ่) แต่ต้องการเว็บเซิร์ฟเวอร์และซอฟต์แวร์การแสดงผล Geoserver ทำงานได้ดีกับ KMZ ประเภทนี้ - ทำงานได้ดีกับ Google Earth เนื่องจาก Google Maps API จำกัด การใช้งาน KML
Mapperz

ฉันไม่เคยโชคดีกับซูเปอร์เลย์มาก่อนยกเว้นกับลูกค้า Google Earth Enterprise แม้ว่าฉันจะไม่ได้ใช้เวลากับเรื่องนี้มากนัก ตัวเลือกในการสำรวจอย่างแน่นอน +1 @Mapperz
OptimizePrime

1
ใช้ GeoServer กับ Oracle และทำงานได้ดีมากในการเรนเดอร์ KMZ (superoverlay) - ข้อมูลสด (อัปเดตตลอดเวลา) ดึงข้อมูลที่เป็นประโยชน์ต่อผู้ใช้มาก - ต้องปรับ geoserver เพื่อเร่งความเร็วในการรีเฟรช
Mapperz

8

หากคุณไม่ได้ใช้เวลามากเกินไปใน Google Maps API คุณสามารถเปลี่ยนเป็น OpenLayers ซึ่งมีตัวแยกวิเคราะห์ KML ฝั่งไคลเอ็นต์ที่สามารถอ่านไฟล์ KML ของคุณเอง - ดูตัวอย่างด้านล่าง:

http://openlayers.org/dev/examples/kml-layer.html

อย่างไรก็ตามสำหรับไฟล์ขนาด 15MB สิ่งนี้น่าจะทำให้เบราว์เซอร์หยุดชะงัก อาจช้าผ่านเซิร์ฟเวอร์ของ Google เช่นกันเมื่อคุณเข้าใกล้ขนาดไฟล์ที่ จำกัด

จำเป็นต้องมีรายละเอียดระดับ 15MB หรือคุณสามารถทำให้ KML ง่ายขึ้นโดยไม่สูญเสียข้อมูลมากเกินไปหรือไม่

คุณต้องการเข้าถึงเวกเตอร์ / เรขาคณิตในฝั่งไคลเอ็นต์หรือไม่? ข้อมูลนี้สามารถใช้เป็นภาพได้หรือไม่

หากไม่เป็นไปได้คุณจะต้องดูซอฟต์แวร์การแสดงแผนที่บางประเภท พร้อมกับ GeoServer ของ ArcGIS Server คุณสามารถพิจารณาMapServerเพื่อให้บริการ KML หรือเป็น WFS ประโยชน์ของการใช้ mapserver คือคำขอจะส่งคืนข้อมูลภายในแผนที่เท่านั้น - ลดทราฟฟิกเครือข่ายและลดเวลาในการโหลด


หลังจากทดลองใช้ Google Fusion tables วิธีของ Guddie นั้นเป็นวิธีที่ง่ายที่สุดในการนำมาใช้ คุณสามารถอัปโหลด KML ได้ครั้งละ 100MB เท่านั้น แต่ผู้ใช้แต่ละคนมีตัวเลือกพื้นที่เก็บข้อมูล 250MB (ในขณะที่เขียน)
geographika

2

หากคุณกำลังใช้เวอร์ชัน 3 คุณสามารถดึงข้อมูลคุณลักษณะทั้งหมดยกเว้นตัวระบุที่ไม่ซ้ำกันและขอข้อมูลผ่านการโทร ajax ไปยังบริการเว็บทุกครั้งที่ผู้ใช้คลิกที่คุณลักษณะ หากคุณมีคะแนนมากกว่า 10 MB อาจเป็นความคิดที่ดีที่จะทำการจัดกลุ่มแบบบางอย่างแทนที่จะแสดงคะแนนทั้งหมดเหล่านั้นในครั้งเดียว นอกจากนี้คุณอาจแยกการวางซ้อนพื้นออกเป็นไฟล์ KML แยกกัน



2

MapLargeมีทางออกที่น่าสนใจ - พวกเขาสามารถทำซ้ำข้อมูลของคุณบนเซิร์ฟเวอร์ของพวกเขาและจากนั้นทำการยกระดับการสร้างไทล์ได้อย่างรวดเร็วโดยใช้ซอฟต์แวร์ที่เป็นกรรมสิทธิ์ของพวกเขา พวกเขามี Javascript APIs ที่สามารถซ้อนทับเหล่านี้บนแผนที่ฐานจาก Google Maps, OpenLayers และอื่น ๆ

ลองดูตัวอย่างบางส่วน - ความเร็วนั้นน่าประทับใจ:

ไม่ฟรี แต่อาจเป็นตัวเลือกที่ดีสำหรับคนที่ไม่ต้องการมีปัญหา & ค่าใช้จ่ายในการแยกเซิร์ฟเวอร์ออกเพื่อสร้างเลเยอร์เหล่านี้

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