Трикове за намаляване на размера на GeoJSON и подобряване на скоростта на вашето приложение за уеб картиране -
Един от проблемите, с които се сблъскваме при създаването на приложение за уеб карти, е възможно най-бързото показване на пространствената информация.
Форматът GeoJSON е по-лек от стандарта GML и също така избягва проблема между кръстосаните домейни.
Сега тази проста архитектура може да има проблем: обектът GeoJSON все още е много тежък (поради броя на цифрите, използвани за кодиране на координатите в текстов формат) и следователно картата отнема много време за показване на данните.
Проблемът е, че уеб прегледът представлява всяка една от геометриите, следователно колкото по-голям е броят на върховете, толкова по-бавна ще бъде картата (25 KB на точка).
Нека видим някои трикове за намаляване на размера на GeoJSON и подобряване на скоростта на нашето приложение за уеб карти:
TopoJSON е разширение GeoJSON, което кодира топологията.
TopoJSOn елиминира съкращения, предлагайки по-компактни изображения на геометрията от GeoJSON. Например споделената граница между две държави се представя само веднъж, вместо да се дублира за двете страни, по този начин споделените точки се представят само веднъж.
TopoJSON количествено определя координатите, по този начин всяка дъга се дефинира от нейните квантовани координати. Квантуването се състои от преобразуване на линия, което се състои от скала и превод, който преобразува координатите с десетична част в цели числа.
Благодарение на премахването на съкращенията и количественото определяне на координатите, Файловете TopoJSON са с 80% по-малки от техните еквиваленти GeoJSON.
Преобразуване на TopoJSON в GeoJSON
Най-простото е да се използва уебсайтът shpescape.com, който ни позволява да трансформираме файлове с шейпфайли в GeoJSON и TopoJSON.
- Премахнете всички атрибути, които няма да използвате в приложението.
- Също така премахнете празното пространство.
- Премахване на прекъсванията на линиите.
В следващия пример виждаме как имаме повтарящи се ключове (ИМЕ, LATITUDE, LONGITUDE, POP_MAX)
Решение за свиване и компресиране на файла премахнете тези ключове и създайте индекс в заглавката. Резултатът ще бъде нещо подобно:
За да извършим тази компресия, имаме инструменти като HPack или CJSON, и двете предлагат коефициенти на компресия, които са около 60-70%.
Един от най-ефективните варианти за намаляване на размера на GeoJSON е опростяване на вектор. По този начин се освобождаваме от детайли, които не са ни необходими. Това опростяване би послужило за линии и полигони.