Браузерде жүздөгөн көп кабаттуу имараттарды ар бир кабат үчүн геометрияны кайталабай 60 кадр/секунда ылдамдыкта көрсөтүү GPU шейдерлерин жана ишенимдүү геомейкиндиктик эсептөөлөрдү талап кылды.
1. Ыңгайлаштырылган GLSL FloorSliceExtension
Ар бир 16 кабаттуу үйдүн ар бир кабатына өзүнчө полигон түзүүнүн ордуна, имараттын контуру бир гана жолу көтөрүлүп, Deck.gl тутумунун чоку жана фрагмент шейдерлерине атайын кеңейтүү кошулат:
- Кабаттарды процедуралык бөлүү:
mod(vPosition.z, 3.2)формуласы аркылуу фрагмент шейдери ар бир3.2метр сайын горизонталдык сызыктарды караңгылатып, кабаттарды так бөлүп көрсөтөт. - Нөлдүк эстутум чыгымы менен кабаттарды кесүү: Кабаттарды бөлүү сызгычын жылдырганда,
uSliceElevationпараметри GPU'га жөнөтүлүп,if (vPosition.z > uSliceElevation) discard;командасы аткарылат. Натыйжада CPU'га кайра жүктөбөстөн, шаар боюнча бардык имараттар 60 FPS ылдамдыкта кесилет. - Интерактивдүү кабат жарыгы: Курсорду тиешелүү бийиктикке алып барганда же басканда, ошол кабат ачык көгүлтүр түстө жарыктандырылат.
2. Көп деңгээлдүү даректерди аныктоо
Кыймылсыз мүлк порталдарындагы жарыяларда так GPS координаттары сейрек кездешет; көбүнчө "Асанбай кичи району 28, Томми Молл тарапта" деген сыяктуу тексттик даректер берилет. Биздин crawler мындай жазууларды PostGIS базасындагы building_id ачкычтарына төмөнкү алгоритмдер менен байланыштырат:
- Көчөлөр жана кичи райондордун нормалдаштырылган сөздүгү менен салыштыруу.
- Trigram окшоштугу (
pg_trgm) жана үйдүн сериясын текшерүү (104,105,106,монолит). - Шаардык багыттоочу чекиттерге (POI) карата аралыкты текшерүү.
