Skip to main content

plot-finder

PyPI Python License Pydantic

One Plot class per country — geometry, area and the local cadastral attributes.

Installation

pip install plot-finder

Quick start

Every country supports the same three lookup modes (where the cadastre exposes them):

from plot_finder import Plot

Plot(country="PL", plot_id="141201_1.0001.6509")          # by cadastral id
Plot(country="PL", x=21.0122, y=52.2297)                  # by coordinates
Plot(country="PL", address="Warszawa, Marszalkowska 1")   # by address

Coordinates are lon/lat in EPSG:4326. Set srid= for another output CRS.

Every Plot has:

plot.geojson       # geometry as GeoJSON
plot.bbox          # bounding box (minx, miny, maxx, maxy)
plot.centroid      # (x, y)
plot.area          # m²
plot.datasource    # which cadastre answered

Coverage

Country id coords address Notes
🇵🇱 Poland ✓ ✓ ✓
🇫🇷 France ✓ ✓ ✓
🇪🇸 Spain ✓ ✓ ✓
🇳🇱 Netherlands ✓ ✓ ✓
🇨🇭 Switzerland ✓ ✓ ✓
🇪🇪 Estonia ✓ ✓ ✓
🇨🇾 Cyprus ✓ ✓ ✓
🇱🇹 Lithuania ✓ ✓ ✓
🇱🇻 Latvia ✓ ✓ ✓
🇵🇹 Portugal ✓ ✓ — partial coverage
🇸🇮 Slovenia ✓ ✓ —
🇮🇹 Italy — ✓ ✓ excl. Trento & Bolzano
🇩🇪 Germany — ✓ ✓ 10 of 16 states
🇳🇴 Norway ✓ ✓ ✓
🇩🇰 Denmark ✓ ✓ ✓
🇧🇪 Belgium ✓ ✓ ✓

🇵🇱 Poland

Attributes: voivodeship, county, commune, region, parcel

plot = Plot(country="PL", plot_id="141201_1.0001.6509")
plot = Plot(country="PL", x=21.0122, y=52.2297)
plot = Plot(country="PL", address="Warszawa, Marszalkowska 1")

print(plot.voivodeship, plot.commune, plot.area)
🇫🇷 France

Attributes: department, insee, commune, section, numero

plot = Plot(country="FR", plot_id="33063000KE0078")
plot = Plot(country="FR", x=-0.5792, y=44.8378)
plot = Plot(country="FR", address="30 Rue Sainte-Catherine, Bordeaux")

print(plot.department, plot.commune, plot.area)
🇪🇸 Spain

Attributes: province, municipality

plot = Plot(country="ES", plot_id="0749407VK4704H")       # cadastral reference
plot = Plot(country="ES", x=-3.6999, y=40.4211)
plot = Plot(country="ES", address="Calle de Alcalá 1, Madrid")

print(plot.province, plot.municipality, plot.area)
🇳🇱 Netherlands

Attributes: municipality, section, parcel_number

plot = Plot(country="NL", plot_id="AKM01 K 3785")     # cadastral designation
plot = Plot(country="NL", x=4.6255, y=52.1987)
plot = Plot(country="NL", address="Dam 1, Amsterdam")

print(plot.municipality, plot.section, plot.area)
🇨🇭 Switzerland

Attributes: canton, municipality, egrid, parcel_number

plot = Plot(country="CH", plot_id="CH119192997709")   # EGRID
plot = Plot(country="CH", x=8.5417, y=47.3769)
plot = Plot(country="CH", address="Bundesplatz 3, Bern")

print(plot.canton, plot.municipality, plot.area)
🇪🇪 Estonia

Attributes: county, municipality, settlement

plot = Plot(country="EE", plot_id="78401:114:0086")   # katastritunnus
plot = Plot(country="EE", x=24.7536, y=59.437)
plot = Plot(country="EE", address="Viru väljak 4, Tallinn")

print(plot.county, plot.municipality, plot.area)
🇨🇾 Cyprus

Attributes: district_code, sheet, plan, parcel_number

plot = Plot(country="CY", plot_id="1000-21/450301-1-1-290")
plot = Plot(country="CY", x=33.3396, y=35.1787)
plot = Plot(country="CY", address="Nicosia, Cyprus")

print(plot.district_code, plot.parcel_number, plot.area)
🇱🇹 Lithuania

Attributes: cadastral_zone, municipality_code, purpose

plot = Plot(country="LT", plot_id="0101/0041:0121")   # kadastro numeris
plot = Plot(country="LT", x=25.27904, y=54.68449)
plot = Plot(country="LT", address="Gedimino pr. 1, Vilnius")

print(plot.cadastral_zone, plot.purpose, plot.area)
🇱🇻 Latvia

Attributes: territory_code, group_code, parcel_number

plot = Plot(country="LV", plot_id="01000540120")   # kadastra apzīmējums
plot = Plot(country="LV", x=24.0917, y=56.9276)
plot = Plot(country="LV", address="Rīga, Latvia")

print(plot.territory_code, plot.parcel_number, plot.area)
🇵🇹 Portugal

Attributes: municipality, parish, district_code

Partial coverage — no big cities or northern regions. Address lookup not supported.

plot = Plot(country="PT", plot_id="AAA000825807")   # NIC
plot = Plot(country="PT", x=-7.7079, y=40.4210)

print(plot.municipality, plot.parish, plot.area)
🇸🇮 Slovenia

Attributes: ko_code, ko_name, municipality, parcel_number

Address lookup not supported.

plot = Plot(country="SI", plot_id="1725-3283/1")   # KO code + parcel number
plot = Plot(country="SI", x=14.50582, y=46.05144)

print(plot.ko_name, plot.municipality, plot.area)
🇮🇹 Italy

Attributes: comune_code, foglio, particella

Coordinates and address only — no id lookup. Excludes Trento & Bolzano.

plot = Plot(country="IT", x=12.4922, y=41.8902)
plot = Plot(country="IT", address="Piazzale degli Uffizi, Firenze")

print(plot.comune_code, plot.foglio, plot.particella, plot.area)
🇩🇪 Germany

Attributes: land, gemarkung, flur, parcel_number

Coordinates and address only — no id lookup. 10 of 16 states (free ALKIS).

plot = Plot(country="DE", x=6.9583, y=50.9413)
plot = Plot(country="DE", address="Domkloster 4, Köln")

print(plot.land, plot.gemarkung, plot.parcel_number, plot.area)
🇳🇴 Norway

Attributes: municipality, municipality_code, gnr, bnr

plot = Plot(country="NO", plot_id="0301-209/494")   # kommunenr-gnr/bnr
plot = Plot(country="NO", x=10.7330, y=59.9116)
plot = Plot(country="NO", address="Karl Johans gate 1, Oslo")

print(plot.municipality, plot.gnr, plot.bnr, plot.area)
🇩🇰 Denmark

Attributes: municipality, ejerlav, matrikelnr

plot = Plot(country="DK", plot_id="2000179-7000q")   # ejerlavkode-matrikelnr
plot = Plot(country="DK", x=12.5683, y=55.6761)
plot = Plot(country="DK", address="Rådhuspladsen 1, København")

print(plot.municipality, plot.ejerlav, plot.matrikelnr, plot.area)
🇧🇪 Belgium

Attributes: nis_code, section, parcel_number

plot = Plot(country="BE", plot_id="41009A0063/00D000")   # capakey
plot = Plot(country="BE", x=4.40262, y=51.21945)
plot = Plot(country="BE", address="Grote Markt 1, Antwerpen")

print(plot.nis_code, plot.section, plot.parcel_number, plot.area)

Documentation

Full docs: ernestilchenko.github.io/plot-finder

License

MIT

Metadata

Release files for plot-finder 1.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for plot-finder 1.11.0
File Size Uploaded Provenance Actions
plot_finder-1.11.0.tar.gz 23.1 kB Without provenance Details for plot_finder-1.11.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for plot-finder 1.11.0
File Interpreter ABI Platform Actions
plot_finder-1.11.0-py3-none-any.whl Python 3 none any Details for plot_finder-1.11.0-py3-none-any.whl

Total release size: 55.9 kB

Release files / plot_finder-1.11.0.tar.gz

Download URL plot_finder-1.11.0.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b298f8671311c8a4b83221dafd04f91e9c7e483346195152185ec442f3a89ace
BLAKE2b-256 checksum
How to use checksums
df166706a22db6ffdc5336dd021c561622ad6c08ae942c41632a67404e19147d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / plot_finder-1.11.0-py3-none-any.whl

Download URL plot_finder-1.11.0-py3-none-any.whl
Size 32.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
50f9c9924925573badeb6df31d682fb0aea5bdb3e86586e6b8073ab5b5bf0c16
BLAKE2b-256 checksum
How to use checksums
e4e4a5ffdd72adbb5b7dd3be2b8e769bf8cede717e7c9717bb9319bd665f46dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Security for plot-finder 1.11.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page