tr-dop 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tr_dop-0.1.0/CHANGELOG.md +23 -0
- tr_dop-0.1.0/CITATION.cff +20 -0
- tr_dop-0.1.0/LICENSE +21 -0
- tr_dop-0.1.0/MANIFEST.in +9 -0
- tr_dop-0.1.0/PKG-INFO +301 -0
- tr_dop-0.1.0/README.md +263 -0
- tr_dop-0.1.0/examples/parseller.csv +10 -0
- tr_dop-0.1.0/examples/plan.csv +7 -0
- tr_dop-0.1.0/examples/proje.json +45 -0
- tr_dop-0.1.0/examples/quickstart.py +60 -0
- tr_dop-0.1.0/examples/yeni_parseller.csv +7 -0
- tr_dop-0.1.0/pyproject.toml +110 -0
- tr_dop-0.1.0/setup.cfg +4 -0
- tr_dop-0.1.0/src/tr_dop/__init__.py +115 -0
- tr_dop-0.1.0/src/tr_dop/__main__.py +7 -0
- tr_dop-0.1.0/src/tr_dop/_version.py +1 -0
- tr_dop-0.1.0/src/tr_dop/area.py +109 -0
- tr_dop-0.1.0/src/tr_dop/cli.py +196 -0
- tr_dop-0.1.0/src/tr_dop/data/land_uses.json +51 -0
- tr_dop-0.1.0/src/tr_dop/distribution.py +326 -0
- tr_dop-0.1.0/src/tr_dop/dop.py +474 -0
- tr_dop-0.1.0/src/tr_dop/engine.py +271 -0
- tr_dop-0.1.0/src/tr_dop/errors.py +11 -0
- tr_dop-0.1.0/src/tr_dop/io.py +464 -0
- tr_dop-0.1.0/src/tr_dop/landuse.py +175 -0
- tr_dop-0.1.0/src/tr_dop/models.py +312 -0
- tr_dop-0.1.0/src/tr_dop/py.typed +0 -0
- tr_dop-0.1.0/src/tr_dop/report.py +144 -0
- tr_dop-0.1.0/src/tr_dop.egg-info/PKG-INFO +301 -0
- tr_dop-0.1.0/src/tr_dop.egg-info/SOURCES.txt +41 -0
- tr_dop-0.1.0/src/tr_dop.egg-info/dependency_links.txt +1 -0
- tr_dop-0.1.0/src/tr_dop.egg-info/entry_points.txt +2 -0
- tr_dop-0.1.0/src/tr_dop.egg-info/requires.txt +6 -0
- tr_dop-0.1.0/src/tr_dop.egg-info/top_level.txt +1 -0
- tr_dop-0.1.0/tests/conftest.py +10 -0
- tr_dop-0.1.0/tests/test_area.py +43 -0
- tr_dop-0.1.0/tests/test_cli.py +141 -0
- tr_dop-0.1.0/tests/test_distribution.py +135 -0
- tr_dop-0.1.0/tests/test_doctests.py +37 -0
- tr_dop-0.1.0/tests/test_dop.py +225 -0
- tr_dop-0.1.0/tests/test_engine.py +181 -0
- tr_dop-0.1.0/tests/test_io.py +149 -0
- tr_dop-0.1.0/tests/test_landuse.py +129 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
## [0.1.0] - 2026-11-09
|
|
8
|
+
### Added
|
|
9
|
+
- DOP ratio (DOPO) computation from the plan's land uses with the 45 % cap of 3194 m.18/2,
|
|
10
|
+
seven-decimal rounding (Yönetmelik m.4/1-d), closed roads, donations and public parcels
|
|
11
|
+
credited (m.14/4-8, m.16/4), flood control facilities last and Treasury land first (m.14/3).
|
|
12
|
+
- "dengeli" (balanced) and "dogrudan" (literal) ratio methods; earlier surrenders and earlier
|
|
13
|
+
DOP handled per 3194 m.18/7-9 (complement up to the ratio, total never above 45 %).
|
|
14
|
+
- Public uses above the cap: free public land first, then KOP shares in proportion to
|
|
15
|
+
entitlement or to the area lying on those uses (Yönetmelik m.15, m.17/3).
|
|
16
|
+
- DOP converted to money because of lawful buildings, with the extra deduction borne by the
|
|
17
|
+
other parcels and the payment split (3194 m.18/11-12, Yönetmelik m.16/1-3).
|
|
18
|
+
- Registered vs computed area choice with the error limit of Yönetmelik m.31 (overridable).
|
|
19
|
+
- Distribution to new parcels (location preferences, minimal splitting), owners' shares with
|
|
20
|
+
integer numerators over the parcel-area denominator (m.32), exact checks.
|
|
21
|
+
- Data-driven, overridable land-use catalogue with article references.
|
|
22
|
+
- JSON/CSV input (Turkish or English column names, decimal commas), Markdown/CSV/JSON output,
|
|
23
|
+
`tr-dop` CLI in Turkish (`hesapla`, `kullanimlar`, `yanilma`).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it as below."
|
|
3
|
+
authors:
|
|
4
|
+
- family-names: "Eminoğlu"
|
|
5
|
+
given-names: "Yusuf"
|
|
6
|
+
email: "geospacephilo@gmail.com"
|
|
7
|
+
orcid: "https://orcid.org/0009-0005-6000-2934"
|
|
8
|
+
title: "tr-dop"
|
|
9
|
+
version: "0.1.0"
|
|
10
|
+
date-released: "2026-11-09"
|
|
11
|
+
license: "MIT"
|
|
12
|
+
repository-code: "https://github.com/YusufEminoglu/tr_dop_sdk"
|
|
13
|
+
url: "https://pypi.org/project/tr-dop/"
|
|
14
|
+
abstract: "Turkish land readjustment (arazi ve arsa düzenlemesi) calculations under Article 18 of Zoning Law 3194 and the Arazi ve Arsa Düzenlemeleri Hakkında Yönetmelik: DOP ratio with the 45 % cap, per-parcel DOP and KOP deductions accounting for earlier surrenders, distribution and shareholding tables, consistency checks, Markdown/CSV reports and a Turkish command-line interface."
|
|
15
|
+
keywords:
|
|
16
|
+
- land readjustment
|
|
17
|
+
- land pooling
|
|
18
|
+
- urban planning
|
|
19
|
+
- cadastre
|
|
20
|
+
- Turkey
|
tr_dop-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Yusuf Eminoğlu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
tr_dop-0.1.0/MANIFEST.in
ADDED
tr_dop-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: tr-dop
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Turkish land readjustment (arazi ve arsa düzenlemesi, İmar Kanunu m.18) calculations: DOP ratio, per-parcel DOP/KOP deductions with earlier surrenders, distribution and shareholding tables, checks, Markdown/CSV reports and a Turkish CLI.
|
|
5
|
+
Author-email: Yusuf Eminoğlu <geospacephilo@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/YusufEminoglu/tr_dop_sdk
|
|
8
|
+
Project-URL: Repository, https://github.com/YusufEminoglu/tr_dop_sdk
|
|
9
|
+
Project-URL: Issues, https://github.com/YusufEminoglu/tr_dop_sdk/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/YusufEminoglu/tr_dop_sdk/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: land-readjustment,land-pooling,arazi-duzenlemesi,imar,18-madde,dop,duzenleme-ortaklik-payi,parselasyon,hisselendirme,cadastre,urban-planning,turkey
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Environment :: Console
|
|
21
|
+
Classifier: Natural Language :: Turkish
|
|
22
|
+
Classifier: Natural Language :: English
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
24
|
+
Classifier: Topic :: Utilities
|
|
25
|
+
Classifier: Intended Audience :: Science/Research
|
|
26
|
+
Classifier: Intended Audience :: Developers
|
|
27
|
+
Classifier: Intended Audience :: Other Audience
|
|
28
|
+
Classifier: Typing :: Typed
|
|
29
|
+
Requires-Python: >=3.9
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
License-File: LICENSE
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
35
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
36
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
37
|
+
Dynamic: license-file
|
|
38
|
+
|
|
39
|
+
# tr-dop
|
|
40
|
+
|
|
41
|
+
[](https://pypi.org/project/tr-dop/)
|
|
42
|
+
[](https://pypi.org/project/tr-dop/)
|
|
43
|
+
[](https://github.com/YusufEminoglu/tr_dop_sdk/actions/workflows/ci.yml)
|
|
44
|
+
[](LICENSE)
|
|
45
|
+
|
|
46
|
+
**English summary.** `tr-dop` computes Turkish land readjustment ("arazi ve arsa düzenlemesi",
|
|
47
|
+
Article 18 of Zoning Law No. 3194) on the standard library alone: the DOP contribution ratio
|
|
48
|
+
under the 45 % cap, per-parcel DOP and KOP deductions that credit earlier surrenders, and the
|
|
49
|
+
distribution and shareholding of the new parcels with exact share checks. Inputs are JSON or
|
|
50
|
+
CSV; outputs are Markdown, CSV and JSON reports and a Turkish command-line tool, with every rule
|
|
51
|
+
traced to the article of the law or regulation it implements.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
**3194 sayılı İmar Kanunu 18. madde uygulaması (arazi ve arsa düzenlemesi) için hesap
|
|
56
|
+
kütüphanesi ve komut satırı aracı.**
|
|
57
|
+
|
|
58
|
+
`tr-dop` şunları yapar:
|
|
59
|
+
|
|
60
|
+
- Plan kullanımlarından **düzenleme ortaklık payı oranını (DOPO)** hesaplar. Hangi kullanımın
|
|
61
|
+
DOP'tan karşılanacağı veri dosyasından okunur ve değiştirilebilir. Üst sınır %45'tir, oran
|
|
62
|
+
virgülden sonra yedi basamakla hesaplanır.
|
|
63
|
+
- **Parsel bazında DOP kesintisini** hesaplar. Önceki terk ve kesintiler (bedelsiz terk, ifraz
|
|
64
|
+
ve tevhit yoluyla terk, evvelce alınmış DOP), bağışlar, kamulaştırmalar, kapanan yollar ve
|
|
65
|
+
kamu tahsisli parseller dikkate alınır. Mevcut yapılar nedeniyle alınamayan DOP bedele
|
|
66
|
+
dönüştürülür.
|
|
67
|
+
- %45'i aşan kamu alanlarını önce bedelsiz kamu alanlarından karşılar, kalanını **KOP
|
|
68
|
+
(kamu ortaklık payı) hissesi** olarak parsellere paylaştırır.
|
|
69
|
+
- Yeni imar parsellerine **dağıtım ve hisselendirme** yapar. Önce eski parselin yeri ve
|
|
70
|
+
tercihleri esas alınır, gerekmedikçe tahsis bölünmez. Payda parsel alanıdır ve paylar tam
|
|
71
|
+
sayıdır.
|
|
72
|
+
- **Kontrolleri** yapar: hisse toplamları, %45 sınırı, parsel bazında toplam kesinti, DOP'un
|
|
73
|
+
karşılanması, saha ve dağıtım dengesi, pay ve payda eşitliği, asgari parsel büyüklüğü.
|
|
74
|
+
- **Tapu ve kadastro alanı farkını** yanılma sınırına göre değerlendirir (Yön. m.31).
|
|
75
|
+
- Sonuçları **Markdown, CSV ve JSON** olarak yazar. Türkçe bir CLI (`tr-dop`) sunar.
|
|
76
|
+
|
|
77
|
+
Bağımlılığı yoktur, yalnızca Python standart kütüphanesini kullanır. Python 3.9 ve üzeri ile
|
|
78
|
+
çalışır.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
pip install tr-dop
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Hızlı başlangıç (komut satırı)
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# JSON proje dosyasıyla: rapor ekrana
|
|
88
|
+
tr-dop hesapla examples/proje.json
|
|
89
|
+
|
|
90
|
+
# CSV girdileriyle: Markdown rapor + CSV cetvelleri + JSON
|
|
91
|
+
tr-dop hesapla --parseller examples/parseller.csv --plan examples/plan.csv \
|
|
92
|
+
--yeni-parseller examples/yeni_parseller.csv --kapanan-yol 450 \
|
|
93
|
+
-o rapor.md --csv-klasoru cikti --ayrac ";" --json sonuc.json
|
|
94
|
+
|
|
95
|
+
# Plan kullanımları kataloğu: hangi kullanım DOP'tan karşılanır, hangi bentte
|
|
96
|
+
tr-dop kullanimlar
|
|
97
|
+
|
|
98
|
+
# Tapu alanı ile hesap alanı karşılaştırması (Yön. m.31)
|
|
99
|
+
tr-dop yanilma --tapu 1800 --hesap 1752 --olcek 1000
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`hesapla` seçenekleri: `--yontem dengeli|dogrudan`, `--kop orantili|cakisma|yok`,
|
|
103
|
+
`--ust-sinir 0.45`, `--kapanan-yol`, `--hazine-taskin`, `--kamu-alani`, `--asgari-parsel`,
|
|
104
|
+
`--tahsisler` (elle tahsis CSV'si), `--katalog` (kullanım kataloğu değişiklikleri).
|
|
105
|
+
Çıkış kodu 0 başarı, 1 bir kontrol hata verdi, 2 girdi hatası anlamına gelir.
|
|
106
|
+
|
|
107
|
+
Örnek rapordan bir bölüm (`examples/proje.json`):
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
- Düzenleme ortaklık payı oranı (DOPO): **0.3551697** (%35,51697)
|
|
111
|
+
- Düşülen alanlar: kapanan yollar 450,00 m², bağış 0,00 m², kamu tahsisli parseller 600,00 m²
|
|
112
|
+
| 120/3 | 1500.00 | 1500.00 | tapu | 250.00 | 371.55 | 0.3551714 | 0.00 | 1128.45 | Önceki terk ... |
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Hızlı başlangıç (Python)
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
from tr_dop import NewParcel, Owner, Parcel, PlanUse, Scheme, Settings, run, to_markdown
|
|
119
|
+
|
|
120
|
+
scheme = Scheme(
|
|
121
|
+
parcels=[
|
|
122
|
+
Parcel("101/1", 2000, [Owner("Ali", "1/2"), Owner("Ayşe", "1/2")]),
|
|
123
|
+
Parcel("101/2", 3000, [Owner("Mehmet", "1")]),
|
|
124
|
+
# ifraz sırasında 300 m² yola bedelsiz terk etmiş parsel (3194 m.18/9)
|
|
125
|
+
Parcel("101/3", 1500, [Owner("Zeynep", "1")], prior_deduction=300),
|
|
126
|
+
],
|
|
127
|
+
plan_uses=[PlanUse("yol", 1800), PlanUse("park", 700), PlanUse("konut", 4300)],
|
|
128
|
+
new_parcels=[NewParcel("5/1", 1100), NewParcel("5/2", 1100),
|
|
129
|
+
NewParcel("5/3", 1050), NewParcel("5/4", 1050)],
|
|
130
|
+
settings=Settings(closed_roads_area=300, min_parcel_area=400),
|
|
131
|
+
)
|
|
132
|
+
result = run(scheme)
|
|
133
|
+
result.dop.ratio # 0.3676471 ( = 2500 / 6800 )
|
|
134
|
+
result.dop.parcel("101/3").dop_area # 361.76 ( = 0.3676471 x 1800 - 300 )
|
|
135
|
+
result.ok # tüm "hata" düzeyindeki kontroller geçti mi
|
|
136
|
+
print(to_markdown(result))
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Girdi biçimleri
|
|
140
|
+
|
|
141
|
+
**JSON proje dosyası** (`examples/proje.json`): `parcels`, `plan_uses`, `new_parcels`,
|
|
142
|
+
isteğe bağlı `allocations` ve `settings`.
|
|
143
|
+
|
|
144
|
+
**CSV** dosyalarında ayraç `,` ya da `;` olabilir (otomatik algılanır). Ondalık virgül
|
|
145
|
+
(`1.234,56`) kabul edilir. Sütun adları Türkçe ya da İngilizce yazılabilir.
|
|
146
|
+
|
|
147
|
+
| Dosya | Sütunlar |
|
|
148
|
+
|---|---|
|
|
149
|
+
| `parseller.csv` (malik başına bir satır) | `parsel`, `malik`, `hisse` (`1/3`, `0,25`), `tapu_alani`; isteğe bağlı `hesap_alani`, `olcek`, `yerlesik`, `yanilma_siniri`, `giren_alan`, `onceki_kesinti`, `onceki_kesinti_turu` (`terk`/`dop`), `deger_artisi`, `bagis`, `kamulastirilan`, `durum` (`ozel`/`kamu_tahsisli`), `azami_kesinti`, `cakisma_alani`, `tercih` (`"1/1;1/2"`) |
|
|
150
|
+
| `plan.csv` | `kullanim`, `alan`, isteğe bağlı `dop` (evet/hayır, katalogdaki değeri geçersiz kılar) |
|
|
151
|
+
| `yeni_parseller.csv` | `yeni_parsel`, `alan`; isteğe bağlı `ada`, `kullanim`, `asgari_alan`, `kop` |
|
|
152
|
+
| `tahsisler.csv` | `parsel`, `yeni_parsel`, `alan` (verilirse otomatik dağıtım yerine kullanılır) |
|
|
153
|
+
|
|
154
|
+
Parsel düzeyindeki sütunlar aynı parselin ilk satırında yazılır, sonraki satırlarda boş
|
|
155
|
+
bırakılabilir.
|
|
156
|
+
|
|
157
|
+
## API özeti
|
|
158
|
+
|
|
159
|
+
| Nesne / fonksiyon | Görev |
|
|
160
|
+
|---|---|
|
|
161
|
+
| `Owner`, `Parcel`, `PlanUse`, `NewParcel`, `Allocation`, `Settings`, `Scheme` | Girdi modeli. Hisseler `Fraction` olarak tutulur, toplamları tam olarak 1 olmalıdır. |
|
|
162
|
+
| `run(scheme, catalog=None)` → `ReadjustmentResult` | DOP, KOP, dağıtım ve kontroller (`.dop`, `.distribution`, `.checks`, `.ok`) |
|
|
163
|
+
| `compute_dop(parcels, plan_uses, settings, catalog)` → `DopResult` | Oran (`ratio`, `applied_ratio`), parsel satırları (`ParcelDop`), kullanım karşılama tablosu (`UseCoverage`) |
|
|
164
|
+
| `distribute(entitlements, owners, new_parcels, ...)` → `Distribution` | Yerleştirme ve hisse satırları (`ShareRow`: pay/payda) |
|
|
165
|
+
| `conversion_payments(dop_result, toplam_bedel)` | Bedele dönüştürülen DOP bedelinin fazladan kesinti yapılan parsellere dağıtımı |
|
|
166
|
+
| `basis_area`, `area_tolerance` | Tapu ve hesap alanı seçimi, yanılma sınırı |
|
|
167
|
+
| `default_catalog()`, `load_catalog(overrides)` | Plan kullanımları kataloğu |
|
|
168
|
+
| `load_scheme`, `read_*_csv`, `scheme_from_mapping` | Girdi okuma |
|
|
169
|
+
| `to_markdown`, `write_outputs`, `dop_table`, `distribution_table`, `coverage_table`, `result_to_mapping` | Çıktılar |
|
|
170
|
+
|
|
171
|
+
## Yöntem ve dayanak
|
|
172
|
+
|
|
173
|
+
Metinler mevzuat.gov.tr'deki güncel İmar Kanunu metni ve Resmî Gazete'de yayımlanan yönetmelik
|
|
174
|
+
ve değişiklikleriyle Kasım 2026'da karşılaştırılmıştır.
|
|
175
|
+
|
|
176
|
+
- **3194 sayılı İmar Kanunu m.18** (7181/2019, 7333/2021 ve 7534/2024 sayılı Kanunlarla
|
|
177
|
+
değişik):
|
|
178
|
+
- fıkra 2: DOP, düzenlemeden önceki yüzölçümünün **%45**'ini geçemez. 5006 sayılı Kanun
|
|
179
|
+
sınırı %35'ten %40'a, 7181 sayılı Kanun %45'e çıkarmıştır.
|
|
180
|
+
- fıkra 3: DOP'un oluşabileceği kullanımların kapalı listesini verir. Taşkın kontrol tesisi
|
|
181
|
+
önce Hazine taşınmazlarından, sonra kalan oran kadar DOP'tan karşılanır. Kapanan imar ve
|
|
182
|
+
kadastro yolları toplam DOP'tan düşülür.
|
|
183
|
+
- fıkra 6: Kamulaştırılan kısım düşüldükten sonra kalan sahadan DOP alınır.
|
|
184
|
+
- fıkra 7: DOP kural olarak bir kez alınır. Yapılaşma koşulu ve nüfus artarsa, önceki terk
|
|
185
|
+
ve kesintiler dikkate alınarak ilk uygulamadaki oran %45'e kadar tamamlanabilir.
|
|
186
|
+
- fıkra 8: 2981 m.10 uygulamalarında tamamlayıcı kesinti yapılabilir; toplam %45'i geçemez.
|
|
187
|
+
- fıkra 9: İfraz ve tevhitle terk edilen alanın oranı, DOPO'ya tamamlayan fark kadar DOP alınır.
|
|
188
|
+
- fıkra 11-12: Yapılar nedeniyle alınamayan DOP bedele dönüştürülür ve fazladan kesinti
|
|
189
|
+
yapılan parsel sahiplerine ödenir.
|
|
190
|
+
- fıkra 13: Tahsis önce düzenlemeye alınan taşınmazın bulunduğu yerden yapılır.
|
|
191
|
+
- fıkra 15: Asgari parsel büyüklüğünün altında parsel oluşturulamaz.
|
|
192
|
+
- **Arazi ve Arsa Düzenlemeleri Hakkında Yönetmelik** (RG 22/2/2020-31047; değişiklikler
|
|
193
|
+
RG 11/9/2025-33014 ve 13/12/2025-33106):
|
|
194
|
+
- m.4/1-d: DOPO = toplam DOP / düzenlemeye giren parsellerin toplam yüzölçümü; yedi basamak.
|
|
195
|
+
- m.14/2: Öncelik sırası (a ... i). m.14/3: taşkın kontrol tesisi. m.14/4-5: kapanan yollar
|
|
196
|
+
ve fazlası. m.14/6-7: önceki terkler (toplam %45). m.14/8: bağış ve tahsis.
|
|
197
|
+
- m.15: %45'i aşan kamu alanları. Önce tescil harici, belediye, kamu ve Hazine alanları
|
|
198
|
+
kullanılır, sonra trampa, imar hakkı aktarımı ya da kamulaştırma. m.15/4'e göre aşan alan,
|
|
199
|
+
çakışan parsellere kamulaştırma şerhiyle tahsis edilir.
|
|
200
|
+
- m.16: DOP alınmayan durumlar (yapılar ve bedele dönüştürme formülü m.16/3, kamu tahsisli
|
|
201
|
+
parseller m.16/4, evvelce DOP alınmış parseller m.16/5).
|
|
202
|
+
- m.17: Dağıtım esasları ve KOP hisselendirmesi (m.17/3). m.31: yüzölçümü kontrolü.
|
|
203
|
+
m.32: hisse hesabı (payda = parsel alanı).
|
|
204
|
+
|
|
205
|
+
**Oran yöntemleri.** Varsayılan `dengeli` yöntem, önceki terkleri olan parsellerin de
|
|
206
|
+
katkısını eşitleyecek oranı çözer: `Σ max(0, r·A⁰ᵢ − Tᵢ) = gereken DOP` (`A⁰` terk öncesi
|
|
207
|
+
alan, `T` önceki terk). Böylece her parselin toplam katkısı özgün alanının aynı `r` oranı olur
|
|
208
|
+
ve kamu alanları tam karşılanır. `dogrudan` yöntem Yönetmelik m.4/1-d tanımını harfiyen
|
|
209
|
+
uygular: `r = gereken DOP / Σ parsel alanı`. Önceki terkler tamamlayan fark olarak düşüldüğü
|
|
210
|
+
için ortaya çıkan açık raporda gösterilir.
|
|
211
|
+
|
|
212
|
+
**KOP.** 2019-2020 düzenlemesiyle eski "kamu ortaklık payı" kesintisi kaldırılmıştır; ancak
|
|
213
|
+
%45'i aşan kamu alanlarının karşılanması gerekir. `tr-dop` aşan alanı hesaplar. Bu alanı önce
|
|
214
|
+
`excess_cover_area` (bedelsiz kamu alanı) ile karşılar, kalanını iki yöntemden biriyle
|
|
215
|
+
paylaştırır. `orantili` yöntemde pay, DOP sonrası tahsis miktarıyla orantılıdır (eski KOP
|
|
216
|
+
uygulaması, Yön. m.17/3). `cakisma` yöntemde pay, parselin aşan kamu alanına düşen kısmıyla
|
|
217
|
+
orantılıdır (Yön. m.15/4). KOP hisseleri malikin mülkiyetinde kalır ve kamulaştırma şerhiyle
|
|
218
|
+
`kop_target` parsellere hisselendirilir.
|
|
219
|
+
|
|
220
|
+
**Dağıtım.** Eski parseller verilen sırayla işlenir. Her parsel önce tercih ettiği yeni
|
|
221
|
+
parsellere, sonra tahsisi bütün olarak alabilen ilk parsele yerleştirilir. Kalan parseller en
|
|
222
|
+
geniş boş parselleri doldurur, son kalan kısım tahsisi tam alabilen en dar parsele konur. Toplam
|
|
223
|
+
tahsis yeni parsel alanından yuvarlama kadar farklıysa en büyük kalan yöntemiyle dengelenir; bu
|
|
224
|
+
dengeleme raporda gösterilir. Hesaplar 0,01 m² tamsayı biriminde yapılır, bu yüzden payların
|
|
225
|
+
toplamı paydaya tam olarak eşittir.
|
|
226
|
+
|
|
227
|
+
## Kontroller
|
|
228
|
+
|
|
229
|
+
| Kod | Düzey | İçerik |
|
|
230
|
+
|---|---|---|
|
|
231
|
+
| `hisse_toplami` | hata | Her eski parselde malik hisselerinin toplamı 1 |
|
|
232
|
+
| `dop_ust_siniri` | hata | DOPO ≤ üst sınır |
|
|
233
|
+
| `dop_asimi` | uyarı | Kamu alanları %45'i aşıyor (KOP/kamulaştırma gerekli) |
|
|
234
|
+
| `parsel_toplam_kesinti` | uyarı | Önceki kesintiler dahil parsel bazında %45 |
|
|
235
|
+
| `dop_karsilama` | uyarı | Toplanan DOP = gereken DOP |
|
|
236
|
+
| `saha_dengesi` | uyarı | Plan kullanımları toplamı = parseller + yollar + kamu alanları |
|
|
237
|
+
| `dagitim_dengesi` | hata | Tahsis toplamı = yeni parsel alanı toplamı (bağıl tolerans) |
|
|
238
|
+
| `dagitilamayan` | hata | Bütün tahsisler dağıtıldı |
|
|
239
|
+
| `pay_payda` | hata | Her yeni parselde Σ pay = payda |
|
|
240
|
+
| `asgari_parsel` | hata | Yeni parsel ≥ asgari büyüklük |
|
|
241
|
+
| `kop_parseli`, `yeni_parsel_plan`, `kapanan_yol_fazlasi`, `bedele_donusturme` | uyarı/bilgi | Ek bilgiler |
|
|
242
|
+
|
|
243
|
+
## Sınırlamalar ve doğrulanamayan noktalar
|
|
244
|
+
|
|
245
|
+
- **Yanılma sınırı:** Formüller Yönetmelik m.31/3'ün 2020 metnindendir. 2025 değişikliğiyle
|
|
246
|
+
fıkra, *Tapu Planlarında Yanılma Sınırının Belirlenmesi Hakkında Yönetmelik*'e (RG
|
|
247
|
+
27/9/2022-31966) atıf yapar hale gelmiştir ve o yönetmeliğin formülleri bu pakette
|
|
248
|
+
doğrulanmamıştır. Yerleşik alan formülündeki karekökün `M·F` çarpımının tamamını kapsadığı
|
|
249
|
+
varsayılmıştır, çünkü RG dizgisi bu konuda belirsizdir. Güncel değer için `tolerance`
|
|
250
|
+
alanını kullanın.
|
|
251
|
+
- **Kullanım kataloğu:** Kanun listesindeki kullanımların DOP kapsamı doğrulanmıştır. Bazı
|
|
252
|
+
satırlar `verified: false` olarak işaretlidir: mezarlık (yalnızca Yönetmelik m.14/2-i'de
|
|
253
|
+
geçer), kent meydanı, kent parkı ve idari tesis (2025'te öncelik listesinden çıkarılmış ya
|
|
254
|
+
da yalnızca tanımda geçer). Öncelik bentlerinden a (ilk kısmı), b, d, e, g ve ı'nın 2025
|
|
255
|
+
metni ikincil kaynaktan doğrulanmıştır. Öteki bentler 2020 metninden alınmıştır.
|
|
256
|
+
`tr-dop kullanimlar` komutu (*) ile işaretli satırları gösterir. `--katalog` ile
|
|
257
|
+
değiştirebilirsiniz.
|
|
258
|
+
- **Hesap yorumları:** `dengeli` yöntem, önceki terklerin "toplam parsel alanı" olarak terk
|
|
259
|
+
öncesi alana (`A⁰ = alan + terk`) oranlandığı yorumuna dayanır. Değer artışı nedeniyle ilave
|
|
260
|
+
DOP alınan parsellerde (3194 m.18/7) ilave kesinti `min(r, %45)·A⁰ − önceki kesinti` olarak
|
|
261
|
+
hesaplanır.
|
|
262
|
+
- **KOP:** `orantili` paylaştırma uygulamadaki eski KOP yöntemine dayanır; güncel mevzuatta
|
|
263
|
+
bu adla bir kesinti yoktur. `cakisma` yöntemi m.15/4'e daha yakındır, ancak çakışma
|
|
264
|
+
alanlarını kullanıcının girmesi gerekir.
|
|
265
|
+
- **Geometri:** Geometri yoktur. Plan kullanım alanları, yeni parsel alanları ve tercihler
|
|
266
|
+
kullanıcıdan alınır. Değer esaslı (eşdeğer) dağıtım, kat mülkiyeti esaslı hisselendirme
|
|
267
|
+
(m.19) ve imar hakkı aktarımı (m.38/A-C) kapsam dışıdır.
|
|
268
|
+
- **Asgari parsel büyüklükleri** plan ve Planlı Alanlar İmar Yönetmeliği'ne göre değişir.
|
|
269
|
+
Varsayılan bir değer yoktur, `min_area` ya da `--asgari-parsel` ile verilmelidir.
|
|
270
|
+
- Sonuçlar ön hesap niteliğindedir. Parselasyon planı yetkili idare tarafından mevzuata göre
|
|
271
|
+
hazırlanır ve onaylanır.
|
|
272
|
+
|
|
273
|
+
## Geliştirme
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
pip install -e ".[dev]"
|
|
277
|
+
pytest --cov=tr_dop
|
|
278
|
+
ruff check . && ruff format --check src tests && mypy src
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Testler ağ kullanmaz. Her sayısal örnek test dosyalarında elle hesaplanarak gösterilmiştir
|
|
282
|
+
(`tests/test_dop.py`, `tests/test_engine.py`).
|
|
283
|
+
|
|
284
|
+
## Lisans
|
|
285
|
+
|
|
286
|
+
MIT © 2026 Yusuf Eminoğlu. Ayrıntılar için [LICENSE](LICENSE) dosyasına, atıf için
|
|
287
|
+
[CITATION.cff](CITATION.cff) dosyasına bakın.
|
|
288
|
+
|
|
289
|
+
## Akademik atıf (Academic citation)
|
|
290
|
+
|
|
291
|
+
```bibtex
|
|
292
|
+
@software{eminoglu_tr_dop,
|
|
293
|
+
author = {Eminoğlu, Yusuf},
|
|
294
|
+
title = {tr-dop},
|
|
295
|
+
year = {2026},
|
|
296
|
+
version = {0.1.0},
|
|
297
|
+
url = {https://github.com/YusufEminoglu/tr_dop_sdk}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
`CITATION.cff` dosyasına da bakın.
|
tr_dop-0.1.0/README.md
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# tr-dop
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/tr-dop/)
|
|
4
|
+
[](https://pypi.org/project/tr-dop/)
|
|
5
|
+
[](https://github.com/YusufEminoglu/tr_dop_sdk/actions/workflows/ci.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
**English summary.** `tr-dop` computes Turkish land readjustment ("arazi ve arsa düzenlemesi",
|
|
9
|
+
Article 18 of Zoning Law No. 3194) on the standard library alone: the DOP contribution ratio
|
|
10
|
+
under the 45 % cap, per-parcel DOP and KOP deductions that credit earlier surrenders, and the
|
|
11
|
+
distribution and shareholding of the new parcels with exact share checks. Inputs are JSON or
|
|
12
|
+
CSV; outputs are Markdown, CSV and JSON reports and a Turkish command-line tool, with every rule
|
|
13
|
+
traced to the article of the law or regulation it implements.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
**3194 sayılı İmar Kanunu 18. madde uygulaması (arazi ve arsa düzenlemesi) için hesap
|
|
18
|
+
kütüphanesi ve komut satırı aracı.**
|
|
19
|
+
|
|
20
|
+
`tr-dop` şunları yapar:
|
|
21
|
+
|
|
22
|
+
- Plan kullanımlarından **düzenleme ortaklık payı oranını (DOPO)** hesaplar. Hangi kullanımın
|
|
23
|
+
DOP'tan karşılanacağı veri dosyasından okunur ve değiştirilebilir. Üst sınır %45'tir, oran
|
|
24
|
+
virgülden sonra yedi basamakla hesaplanır.
|
|
25
|
+
- **Parsel bazında DOP kesintisini** hesaplar. Önceki terk ve kesintiler (bedelsiz terk, ifraz
|
|
26
|
+
ve tevhit yoluyla terk, evvelce alınmış DOP), bağışlar, kamulaştırmalar, kapanan yollar ve
|
|
27
|
+
kamu tahsisli parseller dikkate alınır. Mevcut yapılar nedeniyle alınamayan DOP bedele
|
|
28
|
+
dönüştürülür.
|
|
29
|
+
- %45'i aşan kamu alanlarını önce bedelsiz kamu alanlarından karşılar, kalanını **KOP
|
|
30
|
+
(kamu ortaklık payı) hissesi** olarak parsellere paylaştırır.
|
|
31
|
+
- Yeni imar parsellerine **dağıtım ve hisselendirme** yapar. Önce eski parselin yeri ve
|
|
32
|
+
tercihleri esas alınır, gerekmedikçe tahsis bölünmez. Payda parsel alanıdır ve paylar tam
|
|
33
|
+
sayıdır.
|
|
34
|
+
- **Kontrolleri** yapar: hisse toplamları, %45 sınırı, parsel bazında toplam kesinti, DOP'un
|
|
35
|
+
karşılanması, saha ve dağıtım dengesi, pay ve payda eşitliği, asgari parsel büyüklüğü.
|
|
36
|
+
- **Tapu ve kadastro alanı farkını** yanılma sınırına göre değerlendirir (Yön. m.31).
|
|
37
|
+
- Sonuçları **Markdown, CSV ve JSON** olarak yazar. Türkçe bir CLI (`tr-dop`) sunar.
|
|
38
|
+
|
|
39
|
+
Bağımlılığı yoktur, yalnızca Python standart kütüphanesini kullanır. Python 3.9 ve üzeri ile
|
|
40
|
+
çalışır.
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install tr-dop
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Hızlı başlangıç (komut satırı)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# JSON proje dosyasıyla: rapor ekrana
|
|
50
|
+
tr-dop hesapla examples/proje.json
|
|
51
|
+
|
|
52
|
+
# CSV girdileriyle: Markdown rapor + CSV cetvelleri + JSON
|
|
53
|
+
tr-dop hesapla --parseller examples/parseller.csv --plan examples/plan.csv \
|
|
54
|
+
--yeni-parseller examples/yeni_parseller.csv --kapanan-yol 450 \
|
|
55
|
+
-o rapor.md --csv-klasoru cikti --ayrac ";" --json sonuc.json
|
|
56
|
+
|
|
57
|
+
# Plan kullanımları kataloğu: hangi kullanım DOP'tan karşılanır, hangi bentte
|
|
58
|
+
tr-dop kullanimlar
|
|
59
|
+
|
|
60
|
+
# Tapu alanı ile hesap alanı karşılaştırması (Yön. m.31)
|
|
61
|
+
tr-dop yanilma --tapu 1800 --hesap 1752 --olcek 1000
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`hesapla` seçenekleri: `--yontem dengeli|dogrudan`, `--kop orantili|cakisma|yok`,
|
|
65
|
+
`--ust-sinir 0.45`, `--kapanan-yol`, `--hazine-taskin`, `--kamu-alani`, `--asgari-parsel`,
|
|
66
|
+
`--tahsisler` (elle tahsis CSV'si), `--katalog` (kullanım kataloğu değişiklikleri).
|
|
67
|
+
Çıkış kodu 0 başarı, 1 bir kontrol hata verdi, 2 girdi hatası anlamına gelir.
|
|
68
|
+
|
|
69
|
+
Örnek rapordan bir bölüm (`examples/proje.json`):
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
- Düzenleme ortaklık payı oranı (DOPO): **0.3551697** (%35,51697)
|
|
73
|
+
- Düşülen alanlar: kapanan yollar 450,00 m², bağış 0,00 m², kamu tahsisli parseller 600,00 m²
|
|
74
|
+
| 120/3 | 1500.00 | 1500.00 | tapu | 250.00 | 371.55 | 0.3551714 | 0.00 | 1128.45 | Önceki terk ... |
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Hızlı başlangıç (Python)
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
from tr_dop import NewParcel, Owner, Parcel, PlanUse, Scheme, Settings, run, to_markdown
|
|
81
|
+
|
|
82
|
+
scheme = Scheme(
|
|
83
|
+
parcels=[
|
|
84
|
+
Parcel("101/1", 2000, [Owner("Ali", "1/2"), Owner("Ayşe", "1/2")]),
|
|
85
|
+
Parcel("101/2", 3000, [Owner("Mehmet", "1")]),
|
|
86
|
+
# ifraz sırasında 300 m² yola bedelsiz terk etmiş parsel (3194 m.18/9)
|
|
87
|
+
Parcel("101/3", 1500, [Owner("Zeynep", "1")], prior_deduction=300),
|
|
88
|
+
],
|
|
89
|
+
plan_uses=[PlanUse("yol", 1800), PlanUse("park", 700), PlanUse("konut", 4300)],
|
|
90
|
+
new_parcels=[NewParcel("5/1", 1100), NewParcel("5/2", 1100),
|
|
91
|
+
NewParcel("5/3", 1050), NewParcel("5/4", 1050)],
|
|
92
|
+
settings=Settings(closed_roads_area=300, min_parcel_area=400),
|
|
93
|
+
)
|
|
94
|
+
result = run(scheme)
|
|
95
|
+
result.dop.ratio # 0.3676471 ( = 2500 / 6800 )
|
|
96
|
+
result.dop.parcel("101/3").dop_area # 361.76 ( = 0.3676471 x 1800 - 300 )
|
|
97
|
+
result.ok # tüm "hata" düzeyindeki kontroller geçti mi
|
|
98
|
+
print(to_markdown(result))
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Girdi biçimleri
|
|
102
|
+
|
|
103
|
+
**JSON proje dosyası** (`examples/proje.json`): `parcels`, `plan_uses`, `new_parcels`,
|
|
104
|
+
isteğe bağlı `allocations` ve `settings`.
|
|
105
|
+
|
|
106
|
+
**CSV** dosyalarında ayraç `,` ya da `;` olabilir (otomatik algılanır). Ondalık virgül
|
|
107
|
+
(`1.234,56`) kabul edilir. Sütun adları Türkçe ya da İngilizce yazılabilir.
|
|
108
|
+
|
|
109
|
+
| Dosya | Sütunlar |
|
|
110
|
+
|---|---|
|
|
111
|
+
| `parseller.csv` (malik başına bir satır) | `parsel`, `malik`, `hisse` (`1/3`, `0,25`), `tapu_alani`; isteğe bağlı `hesap_alani`, `olcek`, `yerlesik`, `yanilma_siniri`, `giren_alan`, `onceki_kesinti`, `onceki_kesinti_turu` (`terk`/`dop`), `deger_artisi`, `bagis`, `kamulastirilan`, `durum` (`ozel`/`kamu_tahsisli`), `azami_kesinti`, `cakisma_alani`, `tercih` (`"1/1;1/2"`) |
|
|
112
|
+
| `plan.csv` | `kullanim`, `alan`, isteğe bağlı `dop` (evet/hayır, katalogdaki değeri geçersiz kılar) |
|
|
113
|
+
| `yeni_parseller.csv` | `yeni_parsel`, `alan`; isteğe bağlı `ada`, `kullanim`, `asgari_alan`, `kop` |
|
|
114
|
+
| `tahsisler.csv` | `parsel`, `yeni_parsel`, `alan` (verilirse otomatik dağıtım yerine kullanılır) |
|
|
115
|
+
|
|
116
|
+
Parsel düzeyindeki sütunlar aynı parselin ilk satırında yazılır, sonraki satırlarda boş
|
|
117
|
+
bırakılabilir.
|
|
118
|
+
|
|
119
|
+
## API özeti
|
|
120
|
+
|
|
121
|
+
| Nesne / fonksiyon | Görev |
|
|
122
|
+
|---|---|
|
|
123
|
+
| `Owner`, `Parcel`, `PlanUse`, `NewParcel`, `Allocation`, `Settings`, `Scheme` | Girdi modeli. Hisseler `Fraction` olarak tutulur, toplamları tam olarak 1 olmalıdır. |
|
|
124
|
+
| `run(scheme, catalog=None)` → `ReadjustmentResult` | DOP, KOP, dağıtım ve kontroller (`.dop`, `.distribution`, `.checks`, `.ok`) |
|
|
125
|
+
| `compute_dop(parcels, plan_uses, settings, catalog)` → `DopResult` | Oran (`ratio`, `applied_ratio`), parsel satırları (`ParcelDop`), kullanım karşılama tablosu (`UseCoverage`) |
|
|
126
|
+
| `distribute(entitlements, owners, new_parcels, ...)` → `Distribution` | Yerleştirme ve hisse satırları (`ShareRow`: pay/payda) |
|
|
127
|
+
| `conversion_payments(dop_result, toplam_bedel)` | Bedele dönüştürülen DOP bedelinin fazladan kesinti yapılan parsellere dağıtımı |
|
|
128
|
+
| `basis_area`, `area_tolerance` | Tapu ve hesap alanı seçimi, yanılma sınırı |
|
|
129
|
+
| `default_catalog()`, `load_catalog(overrides)` | Plan kullanımları kataloğu |
|
|
130
|
+
| `load_scheme`, `read_*_csv`, `scheme_from_mapping` | Girdi okuma |
|
|
131
|
+
| `to_markdown`, `write_outputs`, `dop_table`, `distribution_table`, `coverage_table`, `result_to_mapping` | Çıktılar |
|
|
132
|
+
|
|
133
|
+
## Yöntem ve dayanak
|
|
134
|
+
|
|
135
|
+
Metinler mevzuat.gov.tr'deki güncel İmar Kanunu metni ve Resmî Gazete'de yayımlanan yönetmelik
|
|
136
|
+
ve değişiklikleriyle Kasım 2026'da karşılaştırılmıştır.
|
|
137
|
+
|
|
138
|
+
- **3194 sayılı İmar Kanunu m.18** (7181/2019, 7333/2021 ve 7534/2024 sayılı Kanunlarla
|
|
139
|
+
değişik):
|
|
140
|
+
- fıkra 2: DOP, düzenlemeden önceki yüzölçümünün **%45**'ini geçemez. 5006 sayılı Kanun
|
|
141
|
+
sınırı %35'ten %40'a, 7181 sayılı Kanun %45'e çıkarmıştır.
|
|
142
|
+
- fıkra 3: DOP'un oluşabileceği kullanımların kapalı listesini verir. Taşkın kontrol tesisi
|
|
143
|
+
önce Hazine taşınmazlarından, sonra kalan oran kadar DOP'tan karşılanır. Kapanan imar ve
|
|
144
|
+
kadastro yolları toplam DOP'tan düşülür.
|
|
145
|
+
- fıkra 6: Kamulaştırılan kısım düşüldükten sonra kalan sahadan DOP alınır.
|
|
146
|
+
- fıkra 7: DOP kural olarak bir kez alınır. Yapılaşma koşulu ve nüfus artarsa, önceki terk
|
|
147
|
+
ve kesintiler dikkate alınarak ilk uygulamadaki oran %45'e kadar tamamlanabilir.
|
|
148
|
+
- fıkra 8: 2981 m.10 uygulamalarında tamamlayıcı kesinti yapılabilir; toplam %45'i geçemez.
|
|
149
|
+
- fıkra 9: İfraz ve tevhitle terk edilen alanın oranı, DOPO'ya tamamlayan fark kadar DOP alınır.
|
|
150
|
+
- fıkra 11-12: Yapılar nedeniyle alınamayan DOP bedele dönüştürülür ve fazladan kesinti
|
|
151
|
+
yapılan parsel sahiplerine ödenir.
|
|
152
|
+
- fıkra 13: Tahsis önce düzenlemeye alınan taşınmazın bulunduğu yerden yapılır.
|
|
153
|
+
- fıkra 15: Asgari parsel büyüklüğünün altında parsel oluşturulamaz.
|
|
154
|
+
- **Arazi ve Arsa Düzenlemeleri Hakkında Yönetmelik** (RG 22/2/2020-31047; değişiklikler
|
|
155
|
+
RG 11/9/2025-33014 ve 13/12/2025-33106):
|
|
156
|
+
- m.4/1-d: DOPO = toplam DOP / düzenlemeye giren parsellerin toplam yüzölçümü; yedi basamak.
|
|
157
|
+
- m.14/2: Öncelik sırası (a ... i). m.14/3: taşkın kontrol tesisi. m.14/4-5: kapanan yollar
|
|
158
|
+
ve fazlası. m.14/6-7: önceki terkler (toplam %45). m.14/8: bağış ve tahsis.
|
|
159
|
+
- m.15: %45'i aşan kamu alanları. Önce tescil harici, belediye, kamu ve Hazine alanları
|
|
160
|
+
kullanılır, sonra trampa, imar hakkı aktarımı ya da kamulaştırma. m.15/4'e göre aşan alan,
|
|
161
|
+
çakışan parsellere kamulaştırma şerhiyle tahsis edilir.
|
|
162
|
+
- m.16: DOP alınmayan durumlar (yapılar ve bedele dönüştürme formülü m.16/3, kamu tahsisli
|
|
163
|
+
parseller m.16/4, evvelce DOP alınmış parseller m.16/5).
|
|
164
|
+
- m.17: Dağıtım esasları ve KOP hisselendirmesi (m.17/3). m.31: yüzölçümü kontrolü.
|
|
165
|
+
m.32: hisse hesabı (payda = parsel alanı).
|
|
166
|
+
|
|
167
|
+
**Oran yöntemleri.** Varsayılan `dengeli` yöntem, önceki terkleri olan parsellerin de
|
|
168
|
+
katkısını eşitleyecek oranı çözer: `Σ max(0, r·A⁰ᵢ − Tᵢ) = gereken DOP` (`A⁰` terk öncesi
|
|
169
|
+
alan, `T` önceki terk). Böylece her parselin toplam katkısı özgün alanının aynı `r` oranı olur
|
|
170
|
+
ve kamu alanları tam karşılanır. `dogrudan` yöntem Yönetmelik m.4/1-d tanımını harfiyen
|
|
171
|
+
uygular: `r = gereken DOP / Σ parsel alanı`. Önceki terkler tamamlayan fark olarak düşüldüğü
|
|
172
|
+
için ortaya çıkan açık raporda gösterilir.
|
|
173
|
+
|
|
174
|
+
**KOP.** 2019-2020 düzenlemesiyle eski "kamu ortaklık payı" kesintisi kaldırılmıştır; ancak
|
|
175
|
+
%45'i aşan kamu alanlarının karşılanması gerekir. `tr-dop` aşan alanı hesaplar. Bu alanı önce
|
|
176
|
+
`excess_cover_area` (bedelsiz kamu alanı) ile karşılar, kalanını iki yöntemden biriyle
|
|
177
|
+
paylaştırır. `orantili` yöntemde pay, DOP sonrası tahsis miktarıyla orantılıdır (eski KOP
|
|
178
|
+
uygulaması, Yön. m.17/3). `cakisma` yöntemde pay, parselin aşan kamu alanına düşen kısmıyla
|
|
179
|
+
orantılıdır (Yön. m.15/4). KOP hisseleri malikin mülkiyetinde kalır ve kamulaştırma şerhiyle
|
|
180
|
+
`kop_target` parsellere hisselendirilir.
|
|
181
|
+
|
|
182
|
+
**Dağıtım.** Eski parseller verilen sırayla işlenir. Her parsel önce tercih ettiği yeni
|
|
183
|
+
parsellere, sonra tahsisi bütün olarak alabilen ilk parsele yerleştirilir. Kalan parseller en
|
|
184
|
+
geniş boş parselleri doldurur, son kalan kısım tahsisi tam alabilen en dar parsele konur. Toplam
|
|
185
|
+
tahsis yeni parsel alanından yuvarlama kadar farklıysa en büyük kalan yöntemiyle dengelenir; bu
|
|
186
|
+
dengeleme raporda gösterilir. Hesaplar 0,01 m² tamsayı biriminde yapılır, bu yüzden payların
|
|
187
|
+
toplamı paydaya tam olarak eşittir.
|
|
188
|
+
|
|
189
|
+
## Kontroller
|
|
190
|
+
|
|
191
|
+
| Kod | Düzey | İçerik |
|
|
192
|
+
|---|---|---|
|
|
193
|
+
| `hisse_toplami` | hata | Her eski parselde malik hisselerinin toplamı 1 |
|
|
194
|
+
| `dop_ust_siniri` | hata | DOPO ≤ üst sınır |
|
|
195
|
+
| `dop_asimi` | uyarı | Kamu alanları %45'i aşıyor (KOP/kamulaştırma gerekli) |
|
|
196
|
+
| `parsel_toplam_kesinti` | uyarı | Önceki kesintiler dahil parsel bazında %45 |
|
|
197
|
+
| `dop_karsilama` | uyarı | Toplanan DOP = gereken DOP |
|
|
198
|
+
| `saha_dengesi` | uyarı | Plan kullanımları toplamı = parseller + yollar + kamu alanları |
|
|
199
|
+
| `dagitim_dengesi` | hata | Tahsis toplamı = yeni parsel alanı toplamı (bağıl tolerans) |
|
|
200
|
+
| `dagitilamayan` | hata | Bütün tahsisler dağıtıldı |
|
|
201
|
+
| `pay_payda` | hata | Her yeni parselde Σ pay = payda |
|
|
202
|
+
| `asgari_parsel` | hata | Yeni parsel ≥ asgari büyüklük |
|
|
203
|
+
| `kop_parseli`, `yeni_parsel_plan`, `kapanan_yol_fazlasi`, `bedele_donusturme` | uyarı/bilgi | Ek bilgiler |
|
|
204
|
+
|
|
205
|
+
## Sınırlamalar ve doğrulanamayan noktalar
|
|
206
|
+
|
|
207
|
+
- **Yanılma sınırı:** Formüller Yönetmelik m.31/3'ün 2020 metnindendir. 2025 değişikliğiyle
|
|
208
|
+
fıkra, *Tapu Planlarında Yanılma Sınırının Belirlenmesi Hakkında Yönetmelik*'e (RG
|
|
209
|
+
27/9/2022-31966) atıf yapar hale gelmiştir ve o yönetmeliğin formülleri bu pakette
|
|
210
|
+
doğrulanmamıştır. Yerleşik alan formülündeki karekökün `M·F` çarpımının tamamını kapsadığı
|
|
211
|
+
varsayılmıştır, çünkü RG dizgisi bu konuda belirsizdir. Güncel değer için `tolerance`
|
|
212
|
+
alanını kullanın.
|
|
213
|
+
- **Kullanım kataloğu:** Kanun listesindeki kullanımların DOP kapsamı doğrulanmıştır. Bazı
|
|
214
|
+
satırlar `verified: false` olarak işaretlidir: mezarlık (yalnızca Yönetmelik m.14/2-i'de
|
|
215
|
+
geçer), kent meydanı, kent parkı ve idari tesis (2025'te öncelik listesinden çıkarılmış ya
|
|
216
|
+
da yalnızca tanımda geçer). Öncelik bentlerinden a (ilk kısmı), b, d, e, g ve ı'nın 2025
|
|
217
|
+
metni ikincil kaynaktan doğrulanmıştır. Öteki bentler 2020 metninden alınmıştır.
|
|
218
|
+
`tr-dop kullanimlar` komutu (*) ile işaretli satırları gösterir. `--katalog` ile
|
|
219
|
+
değiştirebilirsiniz.
|
|
220
|
+
- **Hesap yorumları:** `dengeli` yöntem, önceki terklerin "toplam parsel alanı" olarak terk
|
|
221
|
+
öncesi alana (`A⁰ = alan + terk`) oranlandığı yorumuna dayanır. Değer artışı nedeniyle ilave
|
|
222
|
+
DOP alınan parsellerde (3194 m.18/7) ilave kesinti `min(r, %45)·A⁰ − önceki kesinti` olarak
|
|
223
|
+
hesaplanır.
|
|
224
|
+
- **KOP:** `orantili` paylaştırma uygulamadaki eski KOP yöntemine dayanır; güncel mevzuatta
|
|
225
|
+
bu adla bir kesinti yoktur. `cakisma` yöntemi m.15/4'e daha yakındır, ancak çakışma
|
|
226
|
+
alanlarını kullanıcının girmesi gerekir.
|
|
227
|
+
- **Geometri:** Geometri yoktur. Plan kullanım alanları, yeni parsel alanları ve tercihler
|
|
228
|
+
kullanıcıdan alınır. Değer esaslı (eşdeğer) dağıtım, kat mülkiyeti esaslı hisselendirme
|
|
229
|
+
(m.19) ve imar hakkı aktarımı (m.38/A-C) kapsam dışıdır.
|
|
230
|
+
- **Asgari parsel büyüklükleri** plan ve Planlı Alanlar İmar Yönetmeliği'ne göre değişir.
|
|
231
|
+
Varsayılan bir değer yoktur, `min_area` ya da `--asgari-parsel` ile verilmelidir.
|
|
232
|
+
- Sonuçlar ön hesap niteliğindedir. Parselasyon planı yetkili idare tarafından mevzuata göre
|
|
233
|
+
hazırlanır ve onaylanır.
|
|
234
|
+
|
|
235
|
+
## Geliştirme
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
pip install -e ".[dev]"
|
|
239
|
+
pytest --cov=tr_dop
|
|
240
|
+
ruff check . && ruff format --check src tests && mypy src
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Testler ağ kullanmaz. Her sayısal örnek test dosyalarında elle hesaplanarak gösterilmiştir
|
|
244
|
+
(`tests/test_dop.py`, `tests/test_engine.py`).
|
|
245
|
+
|
|
246
|
+
## Lisans
|
|
247
|
+
|
|
248
|
+
MIT © 2026 Yusuf Eminoğlu. Ayrıntılar için [LICENSE](LICENSE) dosyasına, atıf için
|
|
249
|
+
[CITATION.cff](CITATION.cff) dosyasına bakın.
|
|
250
|
+
|
|
251
|
+
## Akademik atıf (Academic citation)
|
|
252
|
+
|
|
253
|
+
```bibtex
|
|
254
|
+
@software{eminoglu_tr_dop,
|
|
255
|
+
author = {Eminoğlu, Yusuf},
|
|
256
|
+
title = {tr-dop},
|
|
257
|
+
year = {2026},
|
|
258
|
+
version = {0.1.0},
|
|
259
|
+
url = {https://github.com/YusufEminoglu/tr_dop_sdk}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
`CITATION.cff` dosyasına da bakın.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
parsel;malik;hisse;tapu_alani;hesap_alani;olcek;onceki_kesinti;onceki_kesinti_turu;giren_alan;durum;tercih
|
|
2
|
+
120/1;Ahmet Yılmaz;1/2;2400;2409,5;1000;;;;;"1/1;1/2"
|
|
3
|
+
120/1;Fatma Yılmaz;1/4;;;;;;;;
|
|
4
|
+
120/1;Ali Yılmaz;1/4;;;;;;;;
|
|
5
|
+
120/2;Mehmet Kaya;1;1800;1752;1000;;;;;
|
|
6
|
+
120/3;Zeynep Demir;2/3;1500;;;250;terk;;;
|
|
7
|
+
120/3;Can Demir;1/3;;;;;;;;
|
|
8
|
+
120/4;Hazine;1;900;;;;;;;
|
|
9
|
+
121/7;Elif Şahin;1;1200;;;;;800;;1/6
|
|
10
|
+
121/8;Hazine (MEB tahsisli);1;600;;;;;;kamu_tahsisli;
|