Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PLATEAUをCityJSONにしてみた
Search
ShoYoneda
June 19, 2024
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PLATEAUをCityJSONにしてみた
ShoYoneda
June 19, 2024
More Decks by ShoYoneda
See All by ShoYoneda
PLATEAUで画像生成AIの構図を自由に指定する方法
soh_mitian
0
170
CityGMLとFBXの連携で地理空間のエンタメ化
soh_mitian
1
1.7k
LiDARスキャン点群の継ぎ接ぎ
soh_mitian
0
300
Other Decks in Technology
See All in Technology
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
150
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
240
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
0
120
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
140
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
270
AndroidでHDRメディアを「壊さずに」扱う
chigichan24
0
420
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
160
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
170
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
2
600
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
260
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
360
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
1.3k
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Become a Pro
speakerdeck
PRO
31
6.2k
Are puppies a ranking factor?
jonoalderson
2
3.9k
Automating Front-end Workflow
addyosmani
1369
210k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
WENDY [Excerpt]
tessaabrams
12
39k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
470
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Transcript
1-"5&"6Λ $JUZ+40/ʹͯ͠Έͨ
)PMMPX#ZUF--$ද ถా ক • Կऀʁ • 8FC • ܈ •
σʔλ • ͍ΖΜͳσʔλΛूΊ͍ͯͬͯ͡ ༡Ϳͷ͕झຯ • σʔλมܥͷϓϩάϥϜॻ͘͜ͱ͕ଟ͍ HollowByte LLC 2 ࣗݾհ こいつ👉
8FCͰ$JUZ(.- ͍ͮΒ͍ͶΜ HollowByte LLC 3
HollowByte LLC 4 8FCͰ$JUZ(.-Λॲཧ͢Δʹ const xmlString = ` <CityModel xmlns="http://www.opengis.net/citygml/2.0"
</CityModel>`; // XMLをパースする const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, "application/xml"); // 名前空間リゾルバ function nsResolver(prefix) { const ns = { 'gml': 'http://www.opengis.net/gml', 'bldg': 'http://www.opengis.net/citygml/building/2.0' }; return ns[prefix] || null; } // XPathを使⽤して "bldg:measuredHeight" を抽出する const heights = []; const nodesSnapshot = xmlDoc.evaluate('//bldg:measuredHeight', xmlDoc, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (let i = 0; i < nodesSnapshot.snapshotLength; i++) { heights.push(nodesSnapshot.snapshotItem(i).textContent); } console.log(heights); // ["10", "20"] こいつ👉 PLATEAUくらい情報量があると XPathの処理が爆発する
ݫ͍ͬͯ͠ 8FCͰ$JUZ(.-ѻ͏ͷ ݫ͍ͬͯ͠ 👉ͦ͜Ͱ$JUZ+40/ HollowByte LLC 5
• %ࢢϞσϧΛ֨ೲ͢ΔͨΊͷ+40/ϕʔεͷϑΥʔϚοτ • $JUZ+40/ WΦʔϓϯཧۭؒίϯιʔγΞϜ 0($ ͷެࣜඪ४ • ͍ΘΏΔ$JUZ(.-ͷ+40/ͷ൛ •
+40/ϕʔεͳͷͰϓϩάϥϜతʹѻ͍͍͢ • $JUZ(.-ΑΓܰྔ • ฏۉഒίϯύΫτ • $JUZ(.- .# • $JUZ+40/ .# HollowByte LLC 6 $JUZ+40/ͱͳΜͧ
属性 GeoJSON CityJSON ⽬的と⽤途 簡単な地理空間データの表現と共有。主 にウェブマッピングアプリケーションや 軽量なデータ交換に使⽤。 CityGMLでエンコードされた都市モデルデータの効 率的な表現。詳細な3D都市モデルの共有と解析に 適⽤。
データモデル ポイント、ラインストリング、ポリゴン などの基本的な地理空間オブジェクトを 表現。複雑な3Dモデルには不適。 建物、道路、橋梁、トンネルなどの詳細な3D都市 オブジェクトを表現。複雑なジオメトリと属性情 報を持つ。 構造 フィーチャコレクションとしてデータを 格納。各フィーチャはジオメトリとプロ パティを持つ。 CityObjectsとして都市モデルデータを格納。各 CityObjectはジオメトリと属性を持つ。 互換性 広くサポートされており、ほとんどの GISツールやウェブマッピングライブラ リで使⽤。 CityGMLデータのエンコードに特化。主に3D都市 モデルの解析と共有に使⽤。GeoJSONほどの広範 なツールサポートはないが、3D都市モデル分野で は重要。 HollowByte LLC 7 (FP+40/ͱͷҧ͍ͳΜͶΜ CityJSONはGeoJSONより複雑な情報を扱うことを⽬的としている
HollowByte LLC 8 σʔλߏ CityGML CityJSON パッと⾒でCityJSONのほうが良さそうでしょ
CityGML CityJSON function extractAttributesFromCityGML(xmlData, tagName) { const parser = new
DOMParser(); const xmlDoc = parser.parseFromString(xmlData, 'application/xml'); const buildings = xmlDoc.getElementsByTagName('bldg:Building'); const result = []; for (let i = 0; i < buildings.length; i++) { const building = buildings[i]; const id = building.getAttribute('gml:id'); const tagElements = building.getElementsByTagName(tagName); if (tagElements.length > 0) { const value = tagElements[0].textContent; result.push({ id: id, [tagName]: value }); } } return result; } function extractAttributes(cityjson, attributeName) { const result = []; for (const id in cityjson.CityObjects) { const cityObject = cityjson.CityObjects[id]; if (cityObject.attributes[attributeName] !== undefined) { result.push({id: id, attribute: cityObject.attributes[attributeName] }); } } return result; } HollowByte LLC 9 ѻ͏ίʔυྔʢ+BWB4DSJQUʣ 特定の属性を抽出する関数のコード量⽐較 11⾏ 16⾏
HollowByte LLC 10 $JUZ+40/ͷ%දݱ • JSONベースなのでWebとの親和性が⾼い • CityGMLと同様に属性情報を保持
$JUZ(.-ͱҰॹʹ$JUZ+40/Ͱͷ৴ͯ͠Β͑ͨΓɾɾɾʁ ݫ͍͠ʁ ͡Ό͋ͬͪ͜Ͱมث࡞Δ͔͋ɾɾɾ HollowByte LLC 11 ଆ͝ґཔࣄ߲ 👈作ったらたぶん ここで公開する
5IBOLZPV