# rendrom/rosreestr2coord architecture

> Architecture diagram of the GitHub repository rendrom/rosreestr2coord, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rendrom/rosreestr2coord
- Repository: https://github.com/rendrom/rosreestr2coord

## Overview

rosreestr2coord retrieves geometry for cadastral codes from the NSPD geoportal and exports results as GeoJSON or KML; its CLI also supports batch processing. The graph follows the documented workflows and sampled call sites. README capabilities such as caching and plotting are not wired here because their implementation was not sampled, so they are not mapped as runtime components.

Main entry points: [`rosreestr2coord/parser.py`](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/parser.py) (Area lookup), [`rosreestr2coord/console.py`](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/console.py) (CLI), [`rosreestr2coord/batch.py`](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/batch.py) (Batch processor), [`rosreestr2coord/request/request.py`](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/request.py) (Request routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry points"]
  node_cli["CLI<br/>[console.py]"]
  node_batch["Batch processor<br/>[batch.py]"]
  node_library["Python API<br/>[__init__.py]"]
end

subgraph group_domain["Geometry lookup"]
  node_area["Area lookup<br/>[parser.py]"]
  node_coordinate_transform["WGS transform<br/>[utils.py]"]
end

subgraph group_network["Request transport"]
  node_request["Request routing<br/>[request.py]"]
  node_adapter["HTTP adapter<br/>[urlib_adapter.py]"]
  node_proxy_handling["Proxy handling<br/>[proxy_handling.py]"]
  node_proxy_file["Proxy file<br/>[proxy_handling.py]"]
end

subgraph group_output["Result export"]
  node_export["GeoJSON and KML<br/>[export.py]"]
end

node_nspd{{"NSPD geoportal"}}
node_proxy_list{{"Proxy list site"}}
node_output_files["Output files"]
node_user(("User"))

node_user -->|"runs"| node_cli
node_user -->|"calls"| node_library
node_cli -->|"looks up code"| node_area
node_cli -->|"starts batch"| node_batch
node_batch -->|"looks up each code"| node_area
node_area -->|"sends query"| node_request
node_request -->|"dispatches request"| node_adapter
node_adapter -->|"HTTP request"| node_nspd
node_request -.->|"gets proxies"| node_proxy_handling
node_proxy_handling -->|"reads and writes"| node_proxy_file
node_proxy_handling -.->|"downloads proxies"| node_proxy_list
node_area -->|"transforms geometry"| node_coordinate_transform
node_area -->|"converts to KML"| node_export
node_cli -->|"writes results"| node_output_files
node_batch -->|"builds batch exports"| node_export
node_export -->|"writes exports"| node_output_files

click node_cli "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/console.py"
click node_batch "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/batch.py"
click node_library "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/__init__.py"
click node_area "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/parser.py"
click node_coordinate_transform "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/utils.py"
click node_request "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/request.py"
click node_adapter "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/urlib_adapter.py"
click node_proxy_handling "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/proxy_handling.py"
click node_proxy_file "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/proxy_handling.py"
click node_export "https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/export.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_batch,node_library,node_user toneBlue
class node_area,node_coordinate_transform toneAmber
class node_request,node_adapter,node_proxy_handling,node_proxy_file toneMint
class node_export toneRose
class node_nspd,node_proxy_list,node_output_files toneIndigo
```

## Components

### Entry points

- [CLI](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/console.py): `rosreestr2coord/console.py`
- [Batch processor](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/batch.py): `rosreestr2coord/batch.py`
- [Python API](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/__init__.py): `rosreestr2coord/__init__.py`

### Geometry lookup

- [Area lookup](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/parser.py): `rosreestr2coord/parser.py`
- [WGS transform](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/utils.py): `rosreestr2coord/utils.py`

### Request transport

- [Request routing](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/request.py): `rosreestr2coord/request/request.py`
- [HTTP adapter](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/urlib_adapter.py): `rosreestr2coord/request/urlib_adapter.py`
- [Proxy handling](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/proxy_handling.py): `rosreestr2coord/request/proxy_handling.py`
- [Proxy file](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/request/proxy_handling.py): `rosreestr2coord/request/proxy_handling.py`

### Result export

- [GeoJSON and KML](https://github.com/rendrom/rosreestr2coord/blob/master/rosreestr2coord/export.py): `rosreestr2coord/export.py`

### Other components

- **NSPD geoportal**
- **Proxy list site**
- **Output files**
- **User**

## Connections

- User → CLI: runs
- User → Python API: calls
- CLI → Area lookup: looks up code
- CLI → Batch processor: starts batch
- Batch processor → Area lookup: looks up each code
- Area lookup → Request routing: sends query
- Request routing → HTTP adapter: dispatches request
- HTTP adapter → NSPD geoportal: HTTP request
- Request routing → Proxy handling: gets proxies
- Proxy handling → Proxy file: reads and writes
- Proxy handling → Proxy list site: downloads proxies
- Area lookup → WGS transform: transforms geometry
- Area lookup → GeoJSON and KML: converts to KML
- CLI → Output files: writes results
- Batch processor → GeoJSON and KML: builds batch exports
- GeoJSON and KML → Output files: writes exports
