Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GeoJsonを効率的に取得しよう

 GeoJsonを効率的に取得しよう

2024/08/24(土)に開催された .NETラボ 勉強会 2024年8月( https://dotnetlab.connpass.com/event/326381/) に参加した時に当日受付LTで発表した資料です。 #dotnetlab #cosmosdb

なかしょ

August 24, 2024
Tweet

More Decks by なかしょ

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 • なかしょ(中島進也) @nakasho_dev • 所属:NTTテクノクロス株式会社 デジタルトランスフォーメーション事業部 • 業務:MaaS関連のスマートフォンアプリ開発担当 •

    趣味: Ø妻とモンハンデート ØIT関連の勉強会(主にモバイル系 or アジャイル系) Ø技術コミュニティの運営スタッフ üeXtreme Programming Japan User Group(XPJUG) 2019〜 üTDD BootCamp Online (TDDBC) 2020〜 ※本資料は私個⼈の意⾒であり、所属企業・部⾨⾒解を代表するものではありません。
  2. 4 GeoJSON 地理空間情報を扱うJSONフォーマット • Feature ØGeometry üPoint, LineString, Polygon, MultiPoint,

    MultiLineString, MultiPolygon ØProperties ü属性情報をKey-Valueで持つ üGeoJSONに対応したSDKによっては特定のKeyを⾃動で解釈できる
  3. 5 https://www.geospatial.jp/ckan/dataset/ksj-p29-13 { "type": "Feature", "properties": { "⾏政区域コード": "13112", "公共施設⼤分類":

    "16", "公共施設⼩分類": "16001", "学校分類": "16001", "名称": "太⼦堂⼩学校", "所在地": "太⼦堂5-7-4", "管理者コード": 3.0 }, "geometry": { "type": "Point", "coordinates": [ 139.666776, 35.646405 ] } } G空間情報センターで無料で配布 されている国⼟数値情報(学 校)ー東京都を使⽤。
  4. 1件ずつItemとして登録 10 public GeoJsonToCosmosDB() { this.cosmosClient = new CosmosClient(endpointUri, primaryKey);

    this.database = cosmosClient.GetDatabase(databaseId); this.container = database.GetContainer(containerId); } public async Task UploadGeoJsonAsync(string filePath) { string geoJsonContent = File.ReadAllText(filePath); JObject geoJson = JObject.Parse(geoJsonContent); foreach (var feature in geoJson["features"]) { feature["id"] = Guid.NewGuid().ToString(); var partitionKey = feature["type"]; await this.container.CreateItemAsync(feature, new PartitionKey(partitionKey.ToString())); } } public static async Task Main(string[] args) { GeoJsonToCosmosDB uploader = new GeoJsonToCosmosDB(); string filePath = @"c:¥temp¥p29-13_13.geojson"; await uploader.UploadGeoJsonAsync(filePath); Console.WriteLine("GeoJSON data has been uploaded to CosmosDB."); }
  5. 11

  6. 13

  7. 14