FOSS4G | No pain,No gain. https://ufirst.jp/memo Fri, 30 Aug 2024 08:37:46 +0000 ja hourly 1 https://wordpress.org/?v=6.9.4 https://i0.wp.com/ufirst.jp/memo/wp-content/uploads/2022/08/apple-touch-icon-76x76-precomposed.png?fit=32%2C32&ssl=1 FOSS4G | No pain,No gain. https://ufirst.jp/memo 32 32 126496119 特定のディレクトリに配置されたシェープファイルをPostgresへ追加するコマンド https://ufirst.jp/memo/2024/08/%e7%89%b9%e5%ae%9a%e3%81%ae%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%81%ab%e9%85%8d%e7%bd%ae%e3%81%95%e3%82%8c%e3%81%9f%e3%82%b7%e3%82%a7%e3%83%bc%e3%83%97%e3%83%95%e3%82%a1%e3%82%a4/ https://ufirst.jp/memo/2024/08/%e7%89%b9%e5%ae%9a%e3%81%ae%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%81%ab%e9%85%8d%e7%bd%ae%e3%81%95%e3%82%8c%e3%81%9f%e3%82%b7%e3%82%a7%e3%83%bc%e3%83%97%e3%83%95%e3%82%a1%e3%82%a4/#respond Fri, 30 Aug 2024 08:37:44 +0000 https://ufirst.jp/memo/?p=3910 頻繁に利用するためメモ
shp2pgsql のオプションは適宜変更が必要

unzip "*.zip"

files=($(find . -regex ".*.shp"))
shp2pgsql -p -W cp932 -i -I -D -s 4326 ${files[0]} {TABLE_NAME} > {SQL_FILE_NAME}

for filepath in "${files[@]}";do
 shp2pgsql -a -W cp932 -i -D -s 4326 $filepath {TABLE_NAME} > {SQL_FILE_NAME}
 done
]]>
https://ufirst.jp/memo/2024/08/%e7%89%b9%e5%ae%9a%e3%81%ae%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%81%ab%e9%85%8d%e7%bd%ae%e3%81%95%e3%82%8c%e3%81%9f%e3%82%b7%e3%82%a7%e3%83%bc%e3%83%97%e3%83%95%e3%82%a1%e3%82%a4/feed/ 0 3910
Openlayers6.7にGeotiff表示機能が追加 https://ufirst.jp/memo/2021/09/openlayers6-7%e3%81%abgeotiff%e8%a1%a8%e7%a4%ba%e6%a9%9f%e8%83%bd%e3%81%8c%e8%bf%bd%e5%8a%a0/ https://ufirst.jp/memo/2021/09/openlayers6-7%e3%81%abgeotiff%e8%a1%a8%e7%a4%ba%e6%a9%9f%e8%83%bd%e3%81%8c%e8%bf%bd%e5%8a%a0/#respond Mon, 27 Sep 2021 08:22:17 +0000 https://ufirst.jp/memo/2021/09/27/openlayers6-7%e3%81%abgeotiff%e8%a1%a8%e7%a4%ba%e6%a9%9f%e8%83%bd%e3%81%8c%e8%bf%bd%e5%8a%a0/
Release v6.7.0 · openlayers/openlayers
The 6.7 release includes a great batch of usability improvements, fixes, and new features. See the full list of changes from 100 pull requests below, but here ...
https://twitter.com/openlayers/status/1436029154273599491?s=19
GeoTIFF with Overviews
OpenLayers v10.6.1 API - Module: ol/source/GeoTIFF

]]>
https://ufirst.jp/memo/2021/09/openlayers6-7%e3%81%abgeotiff%e8%a1%a8%e7%a4%ba%e6%a9%9f%e8%83%bd%e3%81%8c%e8%bf%bd%e5%8a%a0/feed/ 0 3240
東京都の町丁目別 火災危険度をマッピングした https://ufirst.jp/memo/2021/09/%e6%9d%b1%e4%ba%ac%e9%83%bd%e3%81%ae%e7%94%ba%e4%b8%81%e7%9b%ae%e5%88%a5%e3%80%80%e7%81%ab%e7%81%bd%e5%8d%b1%e9%99%ba%e5%ba%a6%e3%82%92%e3%83%9e%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%81%97%e3%81%9f/ https://ufirst.jp/memo/2021/09/%e6%9d%b1%e4%ba%ac%e9%83%bd%e3%81%ae%e7%94%ba%e4%b8%81%e7%9b%ae%e5%88%a5%e3%80%80%e7%81%ab%e7%81%bd%e5%8d%b1%e9%99%ba%e5%ba%a6%e3%82%92%e3%83%9e%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%81%97%e3%81%9f/#respond Mon, 27 Sep 2021 05:37:38 +0000 https://ufirst.jp/memo/?p=3235

町丁目別 火災危険度マップを作った。

これは東京都消防庁が公開しているオープンデータを加工しマップアプリ化したもの。
作り方をすぐ忘れるのでメモしておく。

【データソース】

e-Statから境界データ(国勢調査 小地域)
東京消防庁 地域別出火危険度別測定(第10回)

まず上記2つをQGISを使い合体させるのだが、いきなり問題が発生した。

境界データと消防庁のデータで住所文字列で合体させるのだが、住所文字列にゆらぎがありうまく合体出来ない住所が大量に出た。

例:
・○○町1丁目 != ○○町一丁目
・市ヶ谷 != 市ケ谷

など。。。

今思うと、ジオコーディングサービスなどを使いお互いのデータをクリアリングした上で住所コードで合体させればよかったのだが、手作業で荒い合体作業をしてしまった。

そのため最後までポリゴンに穴がある箇所がある

ポリゴンを作成したらQGISを使い、GeoJSONで出力しその後topoJsonに変換する

topoJsonに変換するには以下のライブラリを利用する。

{
  "dependencies": {
    "topojson-client": "^3.1.0",
    "topojson-server": "^3.0.1",
    "topojson-simplify": "^3.0.3"
  }
}

以下でインストール

npm install topojson-client topojson-server topojson-simplify

GeoJSON から topoJSONへ変換

# geo2topo -q 1e6 object=tokyo2018.geojson > tokyo2018.topojson

このままだとポリゴンが高精細すぎて表示すると重くなるため簡素化する

% toposimplify -P 0.0000000001 tokyo2018.topojson > s0.0000000001_tokyo2018.topojson

toposimplify前

toposimplify後

こんなに簡略化していいのかというくらい簡略化してしまった。

しかしこれでWeb上でサクサク動作するようになった。

次にWebアプリを作る。詳しくは割愛するが今を利用した。

・React
・MATERIAL-UI(Reactで使えるマテリアルUIのライブラリ)
・OpenLayres

以前作った以下のサイトで抱えていた問題をすべて解決する事が出来た。
https://ufirst.jp/tokyoEarthquakeAreaRiskMap/

]]>
https://ufirst.jp/memo/2021/09/%e6%9d%b1%e4%ba%ac%e9%83%bd%e3%81%ae%e7%94%ba%e4%b8%81%e7%9b%ae%e5%88%a5%e3%80%80%e7%81%ab%e7%81%bd%e5%8d%b1%e9%99%ba%e5%ba%a6%e3%82%92%e3%83%9e%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%81%97%e3%81%9f/feed/ 0 3235
PostGIS3.2ではST_MakeValidが改善される https://ufirst.jp/memo/2021/09/postgis3-2%e3%81%a7%e3%81%afst_makevalid%e3%81%8c%e6%94%b9%e5%96%84%e3%81%95%e3%82%8c%e3%82%8b/ https://ufirst.jp/memo/2021/09/postgis3-2%e3%81%a7%e3%81%afst_makevalid%e3%81%8c%e6%94%b9%e5%96%84%e3%81%95%e3%82%8c%e3%82%8b/#respond Thu, 16 Sep 2021 11:15:17 +0000 https://ufirst.jp/memo/?p=3101 ソース

Waiting for PostGIS 3.2: ST_MakeValid | Crunchy Data Blog
One of the less visible improvements coming in PostGIS 3.2 (via the GEOS 3.10 release) is a new algorithm for repairing invalid polygons and multipolygons.
]]>
https://ufirst.jp/memo/2021/09/postgis3-2%e3%81%a7%e3%81%afst_makevalid%e3%81%8c%e6%94%b9%e5%96%84%e3%81%95%e3%82%8c%e3%82%8b/feed/ 0 3101
メモ・GIS初中級者のためのPython入門 https://ufirst.jp/memo/2021/05/post-0-65/ https://ufirst.jp/memo/2021/05/post-0-65/#respond Tue, 18 May 2021 10:48:15 +0000 https://ufirst.jp/memo/2021/05/18/post-0/
python入門 · GIS実習オープン教材

タイトル通りのサイト。とても勉強になる。

]]>
https://ufirst.jp/memo/2021/05/post-0-65/feed/ 0 2913
重複したポリゴンの表示の優先順位を決める方法(Geoserverの場合) https://ufirst.jp/memo/2021/01/post-2802/ https://ufirst.jp/memo/2021/01/post-2802/#respond Wed, 20 Jan 2021 07:57:42 +0000 https://ufirst.jp/memo/?p=2802 GISの話

異なる属性値のポリゴンが重複しており、表現がそれぞれで異なる場合、表示するたびに表示が変わってしまう。

どういう事かというと、国土数値情報の洪水浸水区域データをGeoserverに食わせ表示させた。

浸水深1の場合青、浸水深2の場合赤といった具合にポリゴンの表示を変えるわけだが、いざ表示させたところ表示するたびに色が赤になったり青になったりした。

よく見るとポリゴンが重なっており、浸水深1のポリゴンの上に浸水深2のポリゴンが重なっている。それで表示するたびに1,2の表示の優先順位指定をしていなかった為、表示するたびにランダムに色が変わっていたと思われる。

以下のようにVendorOption の “sortBy” を使うことで表示優先順位を指定する事で表示も固定される。

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0"
 xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
 xmlns="http://www.opengis.net/sld"
 xmlns:ogc="http://www.opengis.net/ogc"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name>restricted_zone</Name>
    <UserStyle>
      <Title>国土数値情報 洪水浸水想定区域データ</Title>
      <Abstract>国土数値情報 洪水浸水想定区域データ</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <Name>1</Name>
          <Title>1</Title>
          <Abstract>1</Abstract>
	      <ogc:Filter>
	        <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>a31_201</ogc:PropertyName>
	          <ogc:Literal>1</ogc:Literal>
	        </ogc:PropertyIsEqualTo>
	      </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FF0000</CssParameter>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>2</Name>
          <Title>2</Title>
          <Abstract>2</Abstract>
	      <ogc:Filter>
	        <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>a31_201</ogc:PropertyName>
	          <ogc:Literal>2</ogc:Literal>
	        </ogc:PropertyIsEqualTo>
	      </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#0000FF</CssParameter>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <VendorOption name="sortBy">a31_201</VendorOption>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

]]>
https://ufirst.jp/memo/2021/01/post-2802/feed/ 0 2802
国土数値情報の洪水浸水想定区域データが更新されていたのでQGISで閲覧してみた https://ufirst.jp/memo/2021/01/post-2795/ https://ufirst.jp/memo/2021/01/post-2795/#respond Thu, 14 Jan 2021 11:22:46 +0000 https://ufirst.jp/memo/?p=2795

2020年の9月に国土数値情報の洪水浸水想定区域データが更新されたようだ。今まで知らなかった。

そして、データの分類も増えている上にこれまで都道府県ごとにデータが別れていたが河川毎にデータがわかれている。

特定の地域しか使わない人いいかもしれないが、私は全国を網羅的に利用したいのでこれはこれで面倒だが、仕方ない。

早速データを眺めてみる

過去のデータでは浸水深しかなかったが地物情報と第して「計画規模」、「想定最大規模」、浸水継続時間ランク」、「家屋倒壊氾濫」と4種類に増加。

計画規模とは・・・

洪水を防ぐための計画を作成するとき、被害を発生させずに安全に流すことのできる洪水の大きさ(対策の目標となる洪水の規模)のことを計画規模

想定最大規模とは・・・

想定し得る最大規模の降雨であって国土交通大臣が定める基準に該当するもの

計画規模と想定最大規模の比較

青が浸水深が低く赤が浸水深が高い

利根川の計画規模(背景は地理院地図)
利根川の想定最大規模(背景は地理院地図)

当然の事ながら想定最大規模のほうが浸水リスクの高いエリアが広い事が確認出来る。

「浸水継続時間ランク」と「家屋倒壊氾濫」についての調査はまた今度。

]]>
https://ufirst.jp/memo/2021/01/post-2795/feed/ 0 2795
MapBoxが新サービス  https://ufirst.jp/memo/2020/10/post-0-40/ https://ufirst.jp/memo/2020/10/post-0-40/#respond Tue, 20 Oct 2020 09:13:28 +0000 https://ufirst.jp/memo/2020/10/20/post-0/
Mapbox Tiling Service | Mapbox
Visualize your data on a map faster and with more control than ever before with Mapbox Tiling Service (MTS).

ユーザのジオメトリデータをベクタータイルに変換に配信するサービスがMapboxよりリリースされた。

ベクタータイルの生成はラスタ変換に比べある程度のスキルが必要で、普及しているとは言い難い状況である。

このサービスでエンジニアでなくともベクタータイルの配信が可能となるためサービス利用者は手間のかかるベクタータイルの変換作業から開放され、マップのスタイリングなどに注力できる事になる。

]]>
https://ufirst.jp/memo/2020/10/post-0-40/feed/ 0 2706
ESRI ShapefileをCSVファイルにコマンドで変換する https://ufirst.jp/memo/2020/05/post-2554/ https://ufirst.jp/memo/2020/05/post-2554/#respond Thu, 21 May 2020 14:36:35 +0000 https://ufirst.jp/memo/?p=2554 シェープファイルを大量にCSVファイルへ変換する必要になったので次のコマンドで変換した。ジオメトリは不要だったので省略。

ogr2ogr -f CSV -lco SEPARATOR=COMMA-oo ENCODING=CP932 OUTPUT.csv INPUT.shp
]]>
https://ufirst.jp/memo/2020/05/post-2554/feed/ 0 2554
ESRI Shapefileのフィールド名の取得方法 https://ufirst.jp/memo/2020/05/post-2551/ https://ufirst.jp/memo/2020/05/post-2551/#respond Thu, 21 May 2020 13:51:42 +0000 https://ufirst.jp/memo/?p=2551 大量のシェープファイルのフィールド名を確認する必要があり、わざわざQGISを起動して確認するのは面倒なので以下のコマンドで確認出来る。

【環境】WindowsにQGISがインストールされていること

ogrinfo -ro -so -al -fields=yes *****.shp

このコマンドで以下のような結果を取得出来る。
フィールド名だけでなく、座標系やExtent、地物数などファイルの基本情報をまるっと取得出来る。

INFO: Open of `*****.shp'
      using driver `ESRI Shapefile' successful.
Layer name: ********
Geometry: Polygon
Feature Count: *******
Extent: (******, ******) - (******, ******)
Layer SRS WKT:
GEOGCS["JGD2000",
    DATUM["Japanese_Geodetic_Datum_2000",
        SPHEROID["GRS 1980",6378137,298.257222101,
            AUTHORITY["EPSG","7019"]],
        TOWGS84[0,0,0,0,0,0,0],
        AUTHORITY["EPSG","6612"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.0174532925199433,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4612"]]
Field NAME1: TYPE (*.*)
Field NAME2: TYPE (*.*)
Field NAME3: TYPE (*.*)
Field NAME4: TYPE (*.*)
Field NAME5: TYPE (*.*)

]]>
https://ufirst.jp/memo/2020/05/post-2551/feed/ 0 2551