From 498cf540bab86c3c553c7af13675d513430d4fd5 Mon Sep 17 00:00:00 2001 From: Taku Fukada Date: Sun, 19 Mar 2023 03:48:07 +0900 Subject: [PATCH] Update README and code commens --- README.md | 20 +++++++++++++------- pyproject.toml | 4 ++-- src/mojxml/constants.py | 2 +- src/mojxml/parse.py | 10 +++++----- src/mojxml/reader.py | 2 +- src/mojxml/schema.py | 2 +- 6 files changed, 23 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 9f422ef..2bec2c9 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ [![Test](https://github.com/MIERUNE/mojxml-py/actions/workflows/test.yml/badge.svg)](https://github.com/MIERUNE/mojxml-py/actions/workflows/test.yml) [![PyPI Package](https://img.shields.io/pypi/v/mojxml?color=%2334D058&label=PyPI%20package)](https://pypi.org/project/mojxml) [![codecov](https://codecov.io/gh/MIERUNE/mojxml-py/branch/main/graph/badge.svg?token=mkeysxV2xy)](https://codecov.io/gh/MIERUNE/mojxml-py) -法務省登記所備付地図データ(地図XML)を各種GISデータ形式 (GeoJSON, GeoPackage, FlatGeobuf, etc.) に変換するコマンドラインツールです。地図XMLを読み込むためのPythonライブラリとしての使用も想定しています。 +法務省登記所備付地図データ(地図XML)を各種GISデータ形式 (GeoJSON, GeoPackage, FlatGeobuf, etc.) に変換するコマンドラインツールです。Pythonライブラリとしても使用できます。 -XMLパーサとして [lxml](https://github.com/lxml/lxml) (libxml2) を使用することで、デジタル庁の [mojxml2geojson](https://github.com/JDA-DM/mojxml2geojson) よりも高速な処理を実現しています。 +A tool for fast conversion of Japanese "MOJ Map XML" (land registration polygons) into geospatial format, written in Python. + +XMLパーサとして [lxml](https://github.com/lxml/lxml) (libxml2) を使用することで、デジタル庁のリファレンス実装 ([mojxml2geojson](https://github.com/JDA-DM/mojxml2geojson)) よりも高速な変換を実現しています。また、配布されているZIPファイルをそのまま入力することもできます。 ## インストール @@ -47,18 +49,22 @@ Options: ### 使用例 ```bash -# XMLファイルをGeoJSONに変換 +# XMLファイルをGeoJSONに変換する ❯ mojxml2ogr output.geojson 15222-1107-1553.xml -# 複数のXMLファイルを1つのGeoJSONに変換 +# 複数のXMLファイルを1つのGeoJSONに変換する ❯ mojxml2ogr output.geojson 15222-1107-1553.xml 15222-1107-1554.xml -# 配布用zipファイルに含まれる全XMLをFlatGeobufに変換 +# 配布用ZIPファイルに含まれる全XMLをFlatGeobufに変換する ❯ mojxml2ogr output.fgb 15222-1107.zip -# 3つのzipファイルをまとめて1つのFlatGeobufに変換 +# 3つのZIPファイルをまとめて1つのFlatGeobufに変換する ❯ mojxml2ogr output.fgb 01202-4400.zip 01236-4400.zip 01337-4400.zip -# zipファイルを1段階展開して出てくるZipファイルも与えることができます +# zZIPファイルを1段階展開して出てくるZIPファイルも入力できる ❯ mojxml2ogr output.fgb 15222-1107-15*.zip ``` + +## License + +MIT License diff --git a/pyproject.toml b/pyproject.toml index f14e4eb..0c97274 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "mojxml" -version = "0.2.0" -description = "法務省登記所備付地図データ(地図XML)を読みこむためのPythonライブラリおよび変換用コマンドラインツール" +version = "0.2.1" +description = 'A tool for fast conversion of Japanese "MOJ Map XML" (land registration polygons) into geospatial formats.' authors = ["MIERUNE Inc. "] readme = "README.md" homepage = "https://github.com/MIERUNE/mojxml-py" diff --git a/src/mojxml/constants.py b/src/mojxml/constants.py index 302c202..c80a20c 100644 --- a/src/mojxml/constants.py +++ b/src/mojxml/constants.py @@ -1,4 +1,4 @@ -"""定数値""" +"""Constant values""" from typing import Mapping, Optional diff --git a/src/mojxml/parse.py b/src/mojxml/parse.py index aea59f3..b9082a1 100644 --- a/src/mojxml/parse.py +++ b/src/mojxml/parse.py @@ -1,4 +1,4 @@ -"""Parse MoJ XML files""" +"""Parse MOJ MAP XML files""" from dataclasses import dataclass from typing import Dict, List, Tuple, TypedDict @@ -186,14 +186,13 @@ def _parse_features( def parse_raw(content: bytes, options: ParseOptions) -> List[Feature]: - """Parse raw XML content and get list of features.""" + """Parse raw XML content and get a list of features.""" doc = et.fromstring(content, None) # 基本情報を取得 base_props = _parse_base_properties(doc) source_crs = CRS_MAP[doc.find("./座標系", _NS).text] - # 任意座標系の場合はスキップ(とりあえず) if (not options.include_arbitrary_crs) and source_crs is None: return [] @@ -226,8 +225,9 @@ def parse_raw(content: bytes, options: ParseOptions) -> List[Feature]: surfaces = _parse_surfaces(spatial_elem, curves) - # Note: 図郭についてはデジタル庁の実装もなんだか変な気がするので一旦扱わない - # (筆には複数の図郭が結びつく場合があるが、それを考慮できていない) + # Note: 図郭についてはひとまず扱わないことにする。 + # デジタル庁の実装は筆に図郭の情報を付与しているのものの、これは筆に複数の図郭が結びつく場合に問題があるように思う + # # fude_to_zukakus = {} # for zk in doc.iterfind(".//図郭", _NS): # zukaku = { diff --git a/src/mojxml/reader.py b/src/mojxml/reader.py index a895fe0..43a7ddf 100644 --- a/src/mojxml/reader.py +++ b/src/mojxml/reader.py @@ -1,4 +1,4 @@ -"""xmlおよびzipファイルを透過的に扱う""" +"""Handle XML and ZIP sources trnsparently""" from pathlib import Path from typing import Iterable, List diff --git a/src/mojxml/schema.py b/src/mojxml/schema.py index c4d67ba..e954a9a 100644 --- a/src/mojxml/schema.py +++ b/src/mojxml/schema.py @@ -1,4 +1,4 @@ -"""Schema for OGR""" +"""Schema for OGR output""" import typing from collections import OrderedDict