Skip to content

Commit

Permalink
Update README and code commens
Browse files Browse the repository at this point in the history
  • Loading branch information
ciscorn committed Mar 18, 2023
1 parent eced079 commit 498cf54
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 17 deletions.
20 changes: 13 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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ファイルをそのまま入力することもできます。

## インストール

Expand Down Expand Up @@ -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
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -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. <[email protected]>"]
readme = "README.md"
homepage = "https://github.com/MIERUNE/mojxml-py"
Expand Down
2 changes: 1 addition & 1 deletion src/mojxml/constants.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""定数値"""
"""Constant values"""

from typing import Mapping, Optional

Expand Down
10 changes: 5 additions & 5 deletions src/mojxml/parse.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Parse MoJ XML files"""
"""Parse MOJ MAP XML files"""

from dataclasses import dataclass
from typing import Dict, List, Tuple, TypedDict
Expand Down Expand Up @@ -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 []

Expand Down Expand Up @@ -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 = {
Expand Down
2 changes: 1 addition & 1 deletion src/mojxml/reader.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""xmlおよびzipファイルを透過的に扱う"""
"""Handle XML and ZIP sources trnsparently"""

from pathlib import Path
from typing import Iterable, List
Expand Down
2 changes: 1 addition & 1 deletion src/mojxml/schema.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Schema for OGR"""
"""Schema for OGR output"""

import typing
from collections import OrderedDict
Expand Down

0 comments on commit 498cf54

Please sign in to comment.