diff --git a/arho-feature-template.code-workspace b/arho-feature-template.code-workspace
index 550bf75..8a65baf 100644
--- a/arho-feature-template.code-workspace
+++ b/arho-feature-template.code-workspace
@@ -29,6 +29,9 @@
"yaml.schemas": {
"./arho_feature_template/resources/template_libraries/schema/template_library.schema.json": [
"**/template_libraries/*.yaml"
+ ],
+ "./arho_feature_template/resources/libraries/feature_templates/schema/lisatiedonlaji.schema.json": [
+ "**/libraries/additional_information.yaml"
]
}
},
@@ -55,7 +58,7 @@
"pathMappings": [
{
"localRoot": "${workspaceFolder}/arho_feature_template",
- "remoteRoot": "${env:APPDATA}/QGIS/QGIS3/profiles/default/python/plugins/arho_feature_template"
+ "remoteRoot": "${env:APPDATA}/QGIS/QGIS3/profiles/arho-dev/python/plugins/arho_feature_template"
}
]
},
diff --git a/arho_feature_template/core/models.py b/arho_feature_template/core/models.py
index 416fb40..21fc449 100644
--- a/arho_feature_template/core/models.py
+++ b/arho_feature_template/core/models.py
@@ -1,16 +1,16 @@
from __future__ import annotations
+import enum
import logging
import os
from dataclasses import dataclass, field
-from enum import Enum
from pathlib import Path
from typing import TYPE_CHECKING
import yaml
from arho_feature_template.exceptions import ConfigSyntaxError
-from arho_feature_template.project.layers.code_layers import UndergroundTypeLayer
+from arho_feature_template.project.layers.code_layers import AdditionalInformationTypeLayer, UndergroundTypeLayer
from arho_feature_template.qgis_plugin_tools.tools.resources import resources_path
from arho_feature_template.utils.misc_utils import LANGUAGE, get_layer_by_name, iface
@@ -23,14 +23,25 @@
logger = logging.getLogger(__name__)
DEFAULT_PLAN_REGULATIONS_CONFIG_PATH = Path(os.path.join(resources_path(), "libraries", "kaavamaaraykset.yaml"))
-
-
-class ValueType(Enum):
- DECIMAL = "desimaali"
- POSITIVE_DECIMAL = "positiivinen desimaali"
- POSITIVE_INTEGER = "positiivinen kokonaisluku"
- POSITIVE_INTEGER_RANGE = "positiivinen kokonaisluku arvoväli"
- VERSIONED_TEXT = "kieliversioitu teksti"
+ADDITIONAL_INFORMATION_CONFIG_PATH = Path(os.path.join(resources_path(), "libraries", "additional_information.yaml"))
+
+
+class AttributeValueDataType(str, enum.Enum):
+ LOCALIZED_TEXT = "LocalizedText"
+ TEXT = "Text"
+ NUMERIC = "Numeric"
+ NUMERIC_RANGE = "NumericRange"
+ POSITIVE_NUMERIC = "PositiveNumeric"
+ POSITIVE_NUMERIC_RANGE = "PositiveNumericRange"
+ DECIMAL = "Decimal"
+ DECIMAL_RANGE = "DecimalRange"
+ POSITIVE_DECIMAL = "PositiveDecimal"
+ POSITIVE_DECIMAL_RANGE = "PositiveDecimalRange"
+ CODE = "Code"
+ IDENTIFIER = "Identifier"
+ SPOT_ELEVATION = "SpotElevation"
+ TIME_PERIOD = "TimePeriod"
+ TIME_PERIOD_DATE_ONLY = "TimePeriodDateOnly"
class TemplateSyntaxError(Exception):
@@ -198,8 +209,10 @@ def initialize(
data = regulation_data.get(regulation_config.regulation_code)
if data:
regulation_config.category_only = data.get("category_only", False)
- regulation_config.value_type = ValueType(data["value_type"]) if "value_type" in data else None
- regulation_config.unit = data["unit"] if "unit" in data else None
+ regulation_config.default_value = AttributeValue(
+ value_data_type=(AttributeValueDataType(data["value_type"]) if "value_type" in data else None),
+ unit=data["unit"] if "unit" in data else None,
+ )
# Top-level, add to list
if not regulation_config.parent_id:
@@ -242,8 +255,7 @@ class RegulationConfig:
# Data from config file
category_only: bool = False
- value_type: ValueType | None = None
- unit: str | None = None
+ default_value: AttributeValue | None = None
# NOTE: Perhaps this ("model_from_feature") should be method of PlanTypeLayer class?
@classmethod
@@ -256,8 +268,8 @@ def from_feature(cls, feature: QgsFeature) -> RegulationConfig:
return cls(
id=feature["id"],
regulation_code=feature["value"],
- name=feature["name"][LANGUAGE],
- description=feature["description"][LANGUAGE] if feature["description"] else "",
+ name=feature["name"].get(LANGUAGE) if feature["name"] else None,
+ description=feature["description"].get(LANGUAGE) if feature["description"] else None,
status=feature["status"],
level=feature["level"],
parent_id=feature["parent_id"],
@@ -270,18 +282,152 @@ def add_to_dictionary(self, dictionary: dict[str, RegulationConfig]):
regulation.add_to_dictionary(dictionary)
+@dataclass
+class AdditionalInformationConfig:
+ # From layer
+ id: str
+ additional_information_type: str
+ name: str
+ description: str
+ status: str
+ level: int
+ parent_id: str | None
+
+ children: list[str] = field(default_factory=list)
+
+ # From config file
+ default_value: AttributeValue | None = None
+
+
+@dataclass
+class AdditionalInformationConfigLibrary:
+ version: str
+ configs: dict[str, AdditionalInformationConfig] = field(default_factory=dict)
+ top_level_codes: list[str] = field(default_factory=list)
+
+ _id_to_configs: dict[str, AdditionalInformationConfig] = field(default_factory=dict)
+ _instance: AdditionalInformationConfigLibrary | None = None
+
+ @classmethod
+ def get_instance(cls) -> AdditionalInformationConfigLibrary:
+ """Get the singleton instance, if initialized."""
+ if cls._instance is None:
+ cls._instance = cls.initialize(ADDITIONAL_INFORMATION_CONFIG_PATH)
+ return cls._instance
+
+ @classmethod
+ def initialize(cls, config_fp: Path = ADDITIONAL_INFORMATION_CONFIG_PATH) -> AdditionalInformationConfigLibrary:
+ with config_fp.open(encoding="utf-8") as f:
+ data = yaml.safe_load(f)
+ if data.get("version") != 1:
+ msg = "Version must be 1"
+ raise ConfigSyntaxError(msg)
+ config_file_configs = {
+ ai_config_data["code"]: ai_config_data for ai_config_data in data["additional_information"]
+ }
+
+ code_to_configs: dict[str, AdditionalInformationConfig] = {}
+ id_to_cofigs: dict[str, AdditionalInformationConfig] = {}
+ for feature in AdditionalInformationTypeLayer.get_features():
+ ai_code = feature["value"]
+ congig_file_config = config_file_configs.get(ai_code)
+
+ default_value = (
+ AttributeValue(
+ value_data_type=AttributeValueDataType(congig_file_config["data_type"]),
+ unit=congig_file_config.get("unit"),
+ )
+ if congig_file_config is not None
+ else None
+ )
+
+ ai_config = AdditionalInformationConfig(
+ id=feature["id"],
+ additional_information_type=ai_code,
+ name=feature["name"].get(LANGUAGE) if feature["name"] else None,
+ description=feature["description"].get(LANGUAGE) if feature["description"] else None,
+ status=feature["status"],
+ level=feature["level"],
+ parent_id=feature["parent_id"],
+ default_value=default_value,
+ )
+ code_to_configs[ai_code] = ai_config
+ id_to_cofigs[feature["id"]] = ai_config
+
+ top_level_codes = []
+ for ai_config in code_to_configs.values():
+ if ai_config.parent_id:
+ id_to_cofigs[ai_config.parent_id].children.append(ai_config.additional_information_type)
+ else:
+ top_level_codes.append(ai_config.additional_information_type)
+
+ return cls(
+ version=data["version"],
+ configs=code_to_configs,
+ top_level_codes=top_level_codes,
+ _id_to_configs=id_to_cofigs,
+ )
+
+ @classmethod
+ def get_config_by_code(cls, code: str) -> AdditionalInformationConfig:
+ """Get a regulation by it's regulation code.
+
+ Raises a KeyError if code not exists.
+ """
+ return cls.get_instance().configs[code]
+
+ @classmethod
+ def get_config_by_id(cls, id_: str) -> AdditionalInformationConfig:
+ """Get a regulation by it's regulation code.
+
+ Raises a KeyError if code not exists.
+ """
+
+ return cls.get_instance()._id_to_configs[id_] # noqa: SLF001
+
+
+@dataclass
+class AttributeValue:
+ value_data_type: AttributeValueDataType | None = None
+
+ numeric_value: int | float | None = None
+ numeric_range_min: int | float | None = None
+ numeric_range_max: int | float | None = None
+
+ unit: str | None = None
+
+ text_value: str | None = None
+ text_syntax: str | None = None
+
+ code_list: str | None = None
+ code_value: str | None = None
+ code_title: str | None = None
+
+ height_reference_point: str | None = None
+
+
+@dataclass
+class AdditionalInformation:
+ config: AdditionalInformationConfig # includes code and unit among other needed data for saving feature
+
+ id_: str | None = None
+ plan_regulation_id: str | None = None
+ type_additional_information_id: str | None = None
+ value: AttributeValue | None = None
+
+
@dataclass
class Regulation:
config: RegulationConfig # includes regulation_code and unit among other needed data for saving feature
- value: str | float | int | tuple[int, int] | None = None
- additional_information: dict[str, str | float | int | None] | None = None
+ value: AttributeValue | None = None
+ additional_information: list[AdditionalInformation] = field(default_factory=list)
regulation_number: int | None = None
files: list[str] = field(default_factory=list)
theme: str | None = None
topic_tag: str | None = None
verbal_regulation_type_id: str | None = None
- regulation_group_id_: int | None = None
- id_: int | None = None
+ regulation_group_id: str | None = None
+ id_: str | None = None
@dataclass
@@ -289,8 +435,8 @@ class Proposition:
value: str
theme_id: str | None = None
proposition_number: int | None = None
- regulation_group_id_: int | None = None
- id_: int | None = None
+ regulation_group_id: str | None = None
+ id_: str | None = None
@dataclass
@@ -302,7 +448,33 @@ class RegulationGroup:
group_number: int | None = None
regulations: list[Regulation] = field(default_factory=list)
propositions: list[Proposition] = field(default_factory=list)
- id_: int | None = None
+ id_: str | None = None
+
+ @staticmethod
+ def _additional_information_model_from_config(info_data: dict) -> AdditionalInformation:
+ ai_config = AdditionalInformationConfigLibrary.get_config_by_code(info_data["type"])
+ return AdditionalInformation(
+ config=ai_config,
+ value=AttributeValue(
+ value_data_type=info_data.get(
+ "value_data_type",
+ ai_config.default_value.value_data_type if ai_config.default_value is not None else None,
+ ),
+ numeric_value=info_data.get("numeric_value"),
+ numeric_range_min=info_data.get("numeric_range_min"),
+ numeric_range_max=info_data.get("numeric_range_max"),
+ unit=info_data.get(
+ "unit",
+ ai_config.default_value.unit if ai_config.default_value is not None else None,
+ ),
+ text_value=info_data.get("text_value"),
+ text_syntax=info_data.get("text_syntax"),
+ code_list=info_data.get("code_list"),
+ code_value=info_data.get("code_value"),
+ code_title=info_data.get("code_title"),
+ height_reference_point=info_data.get("height_reference_point"),
+ ),
+ )
@classmethod
def from_config_data(cls, data: dict) -> RegulationGroup:
@@ -311,19 +483,19 @@ def from_config_data(cls, data: dict) -> RegulationGroup:
reg_code = reg_data["regulation_code"]
config = RegulationLibrary.get_regulation_by_code(reg_code)
if config:
- info_data = reg_data.get("additional_information")
regulations.append(
Regulation(
config=config,
value=reg_data.get("value"),
- additional_information={info["type"]: info.get("value") for info in info_data}
- if info_data
- else None,
+ additional_information=[
+ cls._additional_information_model_from_config(info)
+ for info in reg_data.get("additional_information", [])
+ ],
regulation_number=reg_data.get("regulation_number"),
files=reg_data.get("files") if reg_data.get("files") else [],
theme=reg_data.get("theme"),
topic_tag=reg_data.get("topic_tag"),
- regulation_group_id_=None,
+ regulation_group_id=None,
id_=None,
)
)
@@ -351,7 +523,7 @@ class PlanFeature:
description: str | None = None
regulation_groups: list[RegulationGroup] = field(default_factory=list)
plan_id: int | None = None
- id_: int | None = None
+ id_: str | None = None
@classmethod
def from_config_data(cls, data: dict) -> PlanFeature:
@@ -373,7 +545,7 @@ class Plan:
general_regulations: list[RegulationGroup] = field(default_factory=list)
documents: list[Document] = field(default_factory=list)
geom: QgsGeometry | None = None
- id_: int | None = None
+ id_: str | None = None
@dataclass
@@ -393,4 +565,4 @@ class Document:
confirmation_date: datetime | None = None
arrival_date: datetime | None = None
plan_id: int | None = None
- id_: int | None = None
+ id_: str | None = None
diff --git a/arho_feature_template/core/plan_manager.py b/arho_feature_template/core/plan_manager.py
index ccac6e4..4a90e2d 100644
--- a/arho_feature_template/core/plan_manager.py
+++ b/arho_feature_template/core/plan_manager.py
@@ -10,6 +10,7 @@
from arho_feature_template.core.lambda_service import LambdaService
from arho_feature_template.core.models import (
+ AdditionalInformation,
Document,
FeatureTemplateLibrary,
Plan,
@@ -29,6 +30,7 @@
from arho_feature_template.gui.tools.inspect_plan_features_tool import InspectPlanFeatures
from arho_feature_template.project.layers.code_layers import PlanRegulationGroupTypeLayer, code_layers
from arho_feature_template.project.layers.plan_layers import (
+ AdditionalInformationLayer,
DocumentLayer,
LandUseAreaLayer,
LandUsePointLayer,
@@ -461,7 +463,7 @@ def regulation_group_library_from_active_plan() -> RegulationGroupLibrary:
)
-def _save_feature(feature: QgsFeature, layer: QgsVectorLayer, id_: int | None, edit_text: str = ""):
+def _save_feature(feature: QgsFeature, layer: QgsVectorLayer, id_: str | None, edit_text: str = ""):
if not layer.isEditable():
layer.startEditing()
layer.beginEditCommand(edit_text)
@@ -529,8 +531,8 @@ def save_plan(plan: Plan) -> QgsFeature:
return feature
-def save_plan_feature(plan_feature: PlanFeature, plan_id: str | None = None) -> QgsFeature:
- layer_name = plan_feature.layer_name
+def save_plan_feature(plan_model: PlanFeature, plan_id: str | None = None) -> QgsFeature:
+ layer_name = plan_model.layer_name
if not layer_name:
msg = "Cannot save plan feature without a target layer"
raise ValueError(msg)
@@ -539,21 +541,21 @@ def save_plan_feature(plan_feature: PlanFeature, plan_id: str | None = None) ->
msg = f"Could not find plan feature layer class for layer name {layer_name}"
raise ValueError(msg)
- feature = layer_class.feature_from_model(plan_feature, plan_id)
+ plan_feature = layer_class.feature_from_model(plan_model, plan_id)
layer = layer_class.get_from_project()
- editing = plan_feature.id_ is not None
+ editing = plan_model.id_ is not None
_save_feature(
- feature=feature,
+ feature=plan_feature,
layer=layer,
- id_=plan_feature.id_,
+ id_=plan_model.id_,
edit_text="Kaavakohteen muokkaus" if editing else "Kaavakohteen lisäys",
)
# Check for deleted regulation groups
if editing:
for association in RegulationGroupAssociationLayer.get_dangling_associations(
- plan_feature.regulation_groups, feature["id"], layer_name
+ plan_model.regulation_groups, plan_feature["id"], layer_name
):
_delete_feature(
association,
@@ -562,11 +564,11 @@ def save_plan_feature(plan_feature: PlanFeature, plan_id: str | None = None) ->
)
# Save regulation groups
- for group in plan_feature.regulation_groups:
+ for group in plan_model.regulation_groups:
regulation_group_feature = save_regulation_group(group)
- save_regulation_group_association(regulation_group_feature["id"], layer_name, feature["id"])
+ save_regulation_group_association(regulation_group_feature["id"], layer_name, plan_feature["id"])
- return feature
+ return plan_feature
def save_regulation_group(regulation_group: RegulationGroup, plan_id: str | None = None) -> QgsFeature:
@@ -599,13 +601,13 @@ def save_regulation_group(regulation_group: RegulationGroup, plan_id: str | None
# Save regulations
if regulation_group.regulations:
for regulation in regulation_group.regulations:
- regulation.regulation_group_id_ = feature["id"] # Updating regulation group ID
+ regulation.regulation_group_id = feature["id"] # Updating regulation group ID
save_regulation(regulation)
# Save propositions
if regulation_group.propositions:
for proposition in regulation_group.propositions:
- proposition.regulation_group_id_ = feature["id"] # Updating regulation group ID
+ proposition.regulation_group_id = feature["id"] # Updating regulation group ID
save_proposition(proposition)
return feature
@@ -649,23 +651,50 @@ def save_regulation_group_association(regulation_group_id: str, layer_name: str,
def save_regulation(regulation: Regulation) -> QgsFeature:
- feature = PlanRegulationLayer.feature_from_model(regulation)
+ regulation_feature = PlanRegulationLayer.feature_from_model(regulation)
layer = PlanRegulationLayer.get_from_project()
_save_feature(
- feature=feature,
+ feature=regulation_feature,
layer=layer,
id_=regulation.id_,
edit_text="Kaavamääräyksen lisäys" if regulation.id_ is None else "Kaavamääräyksen muokkaus",
)
+ for additional_information in regulation.additional_information:
+ additional_information.plan_regulation_id = regulation_feature["id"]
+ save_additional_information(additional_information)
+
+ return regulation_feature
+
+
+def save_additional_information(additional_information: AdditionalInformation) -> QgsFeature:
+ feature = AdditionalInformationLayer.feature_from_model(additional_information)
+ layer = AdditionalInformationLayer.get_from_project()
+
+ _save_feature(
+ feature=feature,
+ layer=layer,
+ id_=additional_information.id_,
+ edit_text="Lisätiedon lisäys" if additional_information.id_ is None else "Lisätiedon muokkaus",
+ )
return feature
+def delete_additional_information(additional_information: AdditionalInformation):
+ feature = AdditionalInformationLayer.feature_from_model(additional_information)
+ layer = AdditionalInformationLayer.get_from_project()
+
+ _delete_feature(feature, layer, "Lisätiedon poisto")
+
+
def delete_regulation(regulation: Regulation):
feature = PlanRegulationLayer.feature_from_model(regulation)
layer = PlanRegulationLayer.get_from_project()
+ for ai in regulation.additional_information:
+ delete_additional_information(ai)
+
_delete_feature(feature, layer, "Kaavamääräyksen poisto")
diff --git a/arho_feature_template/gui/components/additional_information_widget.py b/arho_feature_template/gui/components/additional_information_widget.py
new file mode 100644
index 0000000..fdd5590
--- /dev/null
+++ b/arho_feature_template/gui/components/additional_information_widget.py
@@ -0,0 +1,107 @@
+from __future__ import annotations
+
+from importlib import resources
+from typing import TYPE_CHECKING
+
+from qgis.core import QgsApplication
+from qgis.PyQt import uic
+from qgis.PyQt.QtCore import Qt, pyqtSignal
+from qgis.PyQt.QtWidgets import (
+ QFormLayout,
+ QLabel,
+ QLineEdit,
+ QToolButton,
+ QWidget,
+)
+
+from arho_feature_template.core.models import AdditionalInformation
+from arho_feature_template.gui.components.value_input_widgets import (
+ ValueWidgetManager,
+)
+
+if TYPE_CHECKING:
+ from qgis.PyQt.QtWidgets import QPushButton
+
+ui_path = resources.files(__package__) / "additional_information_widget.ui"
+FormClass, _ = uic.loadUiType(ui_path)
+
+
+class AdditionalInformationWidget(QWidget, FormClass): # type: ignore
+ """A widget representation of a plan regulation."""
+
+ # TYPES
+ type_of_additional_information_name: QLineEdit
+ form_layout: QFormLayout
+ del_btn: QPushButton
+ expand_hide_btn: QToolButton
+
+ delete_signal = pyqtSignal(QWidget)
+
+ def __init__(self, additional_information: AdditionalInformation, parent=None):
+ super().__init__(parent)
+ self.setupUi(self)
+
+ # INIT
+ self.config = additional_information.config
+ self.additional_information = additional_information
+
+ self.value_widget_manager = (
+ ValueWidgetManager(
+ self.additional_information.value,
+ self.config.default_value,
+ )
+ if self.config and self.config.default_value
+ else None
+ )
+
+ # List of widgets for hiding / showing
+ self.widgets: list[tuple[QLabel, QWidget]] = []
+
+ self.expanded = True
+
+ self.type_of_additional_information_name.setText(self.config.name)
+ self.type_of_additional_information_name.setReadOnly(True)
+ self.del_btn.setIcon(QgsApplication.getThemeIcon("mActionDeleteSelected.svg"))
+ self.del_btn.setDisabled(True) # TODO: Implement delete
+ self.del_btn.clicked.connect(lambda: self.delete_signal.emit(self))
+ self.expand_hide_btn.clicked.connect(self._on_expand_hide_btn_clicked)
+
+ if self.value_widget_manager is not None:
+ widget = (
+ self.value_widget_manager.value_widget
+ if self.value_widget_manager.value_widget is not None
+ else QLabel("Syötekenttää tälle tyypille ei ole vielä toteutettu")
+ )
+ self._add_widget(QLabel("Arvo"), widget)
+
+ def _add_widget(self, label: QLabel, widget: QWidget):
+ self.form_layout.addRow(label, widget)
+ self.widgets.append((label, widget))
+ if not self.expanded:
+ self._on_expand_hide_btn_clicked()
+
+ def _on_expand_hide_btn_clicked(self):
+ if self.expanded:
+ for label, value_widget in self.widgets:
+ # self.form_layout.removeWidget(label)
+ label.hide()
+ # self.form_layout.removeWidget(value_widget)
+ value_widget.hide()
+ self.expand_hide_btn.setArrowType(Qt.ArrowType.DownArrow)
+ self.expanded = False
+ else:
+ for label, value_widget in self.widgets:
+ # self.form_layout.addRow(label, value_widget)
+ label.show()
+ value_widget.show()
+ self.expand_hide_btn.setArrowType(Qt.ArrowType.UpArrow)
+ self.expanded = True
+
+ def into_model(self) -> AdditionalInformation:
+ return AdditionalInformation(
+ config=self.config,
+ id_=self.additional_information.id_,
+ plan_regulation_id=self.additional_information.plan_regulation_id,
+ type_additional_information_id=self.additional_information.type_additional_information_id,
+ value=self.value_widget_manager.into_model() if self.value_widget_manager else None,
+ )
diff --git a/arho_feature_template/gui/components/additional_information_widget.ui b/arho_feature_template/gui/components/additional_information_widget.ui
new file mode 100644
index 0000000..2e1d78f
--- /dev/null
+++ b/arho_feature_template/gui/components/additional_information_widget.ui
@@ -0,0 +1,129 @@
+
+
+ Form
+
+
+
+ 0
+ 0
+ 475
+ 101
+
+
+
+
+ 0
+ 0
+
+
+
+ Form
+
+
+
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
-
+
+
+
+ 9
+ 75
+ true
+
+
+
+ Lisätieto
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Poista kaavamääräys
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Laji
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ Laajenna
+
+
+ false
+
+
+ Qt::UpArrow
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/arho_feature_template/gui/components/code_combobox.py b/arho_feature_template/gui/components/code_combobox.py
index 5368aad..b4a8e83 100644
--- a/arho_feature_template/gui/components/code_combobox.py
+++ b/arho_feature_template/gui/components/code_combobox.py
@@ -102,9 +102,16 @@ def populate_from_code_layer(self, layer_type: type[AbstractCodeLayer]) -> None:
self.tree_widget.expandAll()
- def value(self) -> str:
- item = self.tree_widget.selectedItems()[0]
- return item.data(0, Qt.UserRole)
+ def value(self) -> str | None:
+ """Return the value of the current item.
+
+ Currently might be None, if the current item is not selectable."""
+
+ selected = self.tree_widget.selectedItems() # TODO: Find a way to get the current item even if not selectable
+ if selected: # current item might not be selectable
+ item = selected[0]
+ return item.data(0, Qt.UserRole)
+ return None
def _find_item_recursive(self, item: QTreeWidgetItem, value: str) -> QTreeWidgetItem:
"""Recursively try to find item with given value and return the item if found."""
diff --git a/arho_feature_template/gui/components/plan_proposition_widget.py b/arho_feature_template/gui/components/plan_proposition_widget.py
index 986df25..3ccd582 100644
--- a/arho_feature_template/gui/components/plan_proposition_widget.py
+++ b/arho_feature_template/gui/components/plan_proposition_widget.py
@@ -10,7 +10,7 @@
from arho_feature_template.core.models import Proposition
from arho_feature_template.gui.components.code_combobox import CodeComboBox
-from arho_feature_template.gui.components.plan_regulation_input_widgets import IntegerInputWidget
+from arho_feature_template.gui.components.value_input_widgets import IntegerInputWidget
from arho_feature_template.project.layers.code_layers import PlanThemeLayer
if TYPE_CHECKING:
diff --git a/arho_feature_template/gui/components/plan_regulation_input_widgets.py b/arho_feature_template/gui/components/plan_regulation_input_widgets.py
deleted file mode 100644
index 1d65659..0000000
--- a/arho_feature_template/gui/components/plan_regulation_input_widgets.py
+++ /dev/null
@@ -1,115 +0,0 @@
-from __future__ import annotations
-
-from qgis.gui import QgsDoubleSpinBox, QgsSpinBox
-from qgis.PyQt.QtWidgets import QHBoxLayout, QLineEdit, QSizePolicy, QTextEdit, QWidget
-
-
-def initialize_numeric_input_widget(
- widget: QgsSpinBox | QgsDoubleSpinBox,
- default_value: float | None,
- unit: str | None,
- positive: bool, # noqa: FBT001
-):
- if unit:
- widget.setSuffix(f" {unit}")
-
- if positive:
- widget.setMinimum(0)
- else:
- widget.setMinimum(-99999)
-
- widget.setMaximum(99999)
-
- if default_value:
- widget.setValue(default_value)
-
- widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
-
-
-def initialize_text_input_widget(
- widget: QTextEdit | QLineEdit,
- default_value: str | None,
- editable: bool, # noqa: FBT001
-):
- if default_value:
- widget.setText(str(default_value))
-
- if not editable:
- widget.setReadOnly(True)
-
-
-class DecimalInputWidget(QgsDoubleSpinBox):
- def __init__(
- self,
- default_value: float | None = None,
- unit: str | None = None,
- positive: bool = False, # noqa: FBT001, FBT002
- ):
- super().__init__()
- self.unit = unit
- initialize_numeric_input_widget(self, default_value, unit, positive)
-
- def get_value(self) -> float:
- return self.value()
-
-
-class IntegerInputWidget(QgsSpinBox):
- def __init__(
- self,
- default_value: int | None = None,
- unit: str | None = None,
- positive: bool = False, # noqa: FBT001, FBT002
- ):
- super().__init__()
- self.unit = unit
- initialize_numeric_input_widget(self, default_value, unit, positive)
-
- def get_value(self) -> int:
- return self.value()
-
-
-class IntegerRangeInputWidget(QWidget):
- def __init__(
- self,
- default_value: tuple[int, int] | list[int] | None = None,
- unit: str | None = None,
- positive: bool = False, # noqa: FBT001, FBT002
- ):
- super().__init__()
- if isinstance(default_value, list):
- default_value = (default_value[0], default_value[1])
- self.min_widget = IntegerInputWidget(default_value[0] if default_value else None, unit, positive)
- self.max_widget = IntegerInputWidget(default_value[1] if default_value else None, unit, positive)
- layout = QHBoxLayout()
- layout.addWidget(self.min_widget)
- layout.addWidget(self.max_widget)
- self.setLayout(layout)
-
- def get_value(self) -> tuple[int, int]:
- return (self.min_widget.get_value(), self.max_widget.get_value())
-
-
-class SinglelineTextInputWidget(QLineEdit):
- def __init__(
- self,
- default_value: str | None = None,
- editable: bool = False, # noqa: FBT001, FBT002
- ):
- super().__init__()
- initialize_text_input_widget(self, default_value, editable)
-
- def get_value(self) -> str | None:
- return self.text() if self.text() else None
-
-
-class MultilineTextInputWidget(QTextEdit):
- def __init__(
- self,
- default_value: str | None = None,
- editable: bool = True, # noqa: FBT001, FBT002
- ):
- super().__init__()
- initialize_text_input_widget(self, default_value, editable)
-
- def get_value(self) -> str | None:
- return self.toPlainText() if self.toPlainText() else None
diff --git a/arho_feature_template/gui/components/plan_regulation_widget.py b/arho_feature_template/gui/components/plan_regulation_widget.py
index 866ee73..34eab7a 100644
--- a/arho_feature_template/gui/components/plan_regulation_widget.py
+++ b/arho_feature_template/gui/components/plan_regulation_widget.py
@@ -7,26 +7,22 @@
from qgis.gui import QgsFileWidget
from qgis.PyQt import uic
from qgis.PyQt.QtCore import Qt, pyqtSignal
-from qgis.PyQt.QtWidgets import (
- QFormLayout,
- QLabel,
- QLineEdit,
- QMenu,
- QToolButton,
- QWidget,
-)
+from qgis.PyQt.QtWidgets import QFormLayout, QFrame, QLabel, QLineEdit, QMenu, QToolButton, QVBoxLayout, QWidget
-from arho_feature_template.core.models import Regulation, ValueType
+from arho_feature_template.core.models import (
+ AdditionalInformation,
+ AdditionalInformationConfigLibrary,
+ Regulation,
+)
+from arho_feature_template.gui.components.additional_information_widget import AdditionalInformationWidget
from arho_feature_template.gui.components.code_combobox import HierarchicalCodeComboBox
-from arho_feature_template.gui.components.plan_regulation_input_widgets import (
- DecimalInputWidget,
+from arho_feature_template.gui.components.value_input_widgets import (
IntegerInputWidget,
- IntegerRangeInputWidget,
- MultilineTextInputWidget,
SinglelineTextInputWidget,
+ ValueWidgetManager,
)
-from arho_feature_template.project.layers.code_layers import AdditionalInformationTypeLayer, VerbalRegulationType
-from arho_feature_template.utils.misc_utils import LANGUAGE, get_layer_by_name, iface
+from arho_feature_template.project.layers.code_layers import VerbalRegulationType
+from arho_feature_template.utils.misc_utils import LANGUAGE, get_layer_by_name
if TYPE_CHECKING:
from qgis.PyQt.QtWidgets import QPushButton
@@ -38,39 +34,44 @@
class RegulationWidget(QWidget, FormClass): # type: ignore
"""A widget representation of a plan regulation."""
+ # TYPES
+ plan_regulation_name: QLineEdit
+ form_layout: QFormLayout
+ add_additional_information_btn: QPushButton
+ add_field_btn: QPushButton
+ del_btn: QPushButton
+ expand_hide_btn: QToolButton
+ additional_information_frame: QFrame
+ additional_information_layout: QVBoxLayout
+
delete_signal = pyqtSignal(QWidget)
def __init__(self, regulation: Regulation, parent=None):
super().__init__(parent)
self.setupUi(self)
- # TYPES
- self.plan_regulation_name: QLineEdit
- self.form_layout: QFormLayout
- self.add_additional_information_btn: QPushButton
- self.add_field_btn: QPushButton
- self.del_btn: QPushButton
- self.expand_hide_btn: QToolButton
- self.code_label: QLabel
- self.code: QLineEdit
-
# INIT
self.config = regulation.config
self.regulation = regulation
+ self.value_widget_manager = (
+ ValueWidgetManager(self.regulation.value, self.config.default_value) if self.config.default_value else None
+ )
+
# List of widgets for hiding / showing
self.widgets: list[tuple[QLabel, QWidget]] = []
# For accessing correct widgets when data is sent
self.value_widget: QWidget | None = None
self.regulation_number_widget: IntegerInputWidget | None = None
- self.additional_information_widgets: dict[str, QWidget | None] = {} # Key = information type, value = widget
+ self.additional_information_widgets: list[AdditionalInformationWidget] = []
self.file_widgets: list[QgsFileWidget] = []
self.theme_widget: SinglelineTextInputWidget | None = None
self.topic_tag_widget: SinglelineTextInputWidget | None = None
self.type_of_verbal_regulation_widget: HierarchicalCodeComboBox | None = None
self.expanded = True
+ self.additional_information_frame.hide()
self.plan_regulation_name.setText(self.config.name)
self.plan_regulation_name.setReadOnly(True)
self.del_btn.setIcon(QgsApplication.getThemeIcon("mActionDeleteSelected.svg"))
@@ -82,73 +83,41 @@ def __init__(self, regulation: Regulation, parent=None):
def _init_widgets(self):
# Value input
- value_type = self.config.value_type
- if value_type:
- self._add_value_input(value_type, self.config.unit, self.regulation.value)
+ if self.config.default_value:
+ self._add_widget(QLabel("Arvo"), self.value_widget_manager.value_widget)
+
if self.config.regulation_code == "sanallinenMaarays":
self.type_of_verbal_regulation_widget = HierarchicalCodeComboBox()
self.type_of_verbal_regulation_widget.populate_from_code_layer(VerbalRegulationType)
- self._add_widgets(QLabel("Sanallisen määräyksen laji"), self.type_of_verbal_regulation_widget)
+ self._add_widget(QLabel("Sanallisen määräyksen laji"), self.type_of_verbal_regulation_widget)
if self.regulation.verbal_regulation_type_id is not None:
self.type_of_verbal_regulation_widget.set_value(self.regulation.verbal_regulation_type_id)
# Additional information
- if self.regulation.additional_information:
- for info_type, info_value in self.regulation.additional_information.items():
- self._add_additional_info(info_type, info_value)
-
- def _add_value_input(
- self, value_type: ValueType, unit: str | None, default_value: str | float | list[int] | None = None
- ):
- base_error_msg = f"Invalid type for default value {type(default_value)}."
- if value_type in [ValueType.DECIMAL, ValueType.POSITIVE_DECIMAL]:
- if not isinstance(default_value, float) and default_value is not None:
- raise ValueError(base_error_msg)
- self._add_decimal_input(value_type, unit, default_value)
- elif value_type == ValueType.POSITIVE_INTEGER:
- if not isinstance(default_value, (int, float)) and default_value is not None:
- raise ValueError(base_error_msg)
- self._add_integer_input(value_type, unit, default_value)
- elif value_type == ValueType.POSITIVE_INTEGER_RANGE:
- if not isinstance(default_value, list) and default_value is not None:
- raise ValueError(base_error_msg)
- if isinstance(default_value, list) and len(default_value) != 2: # noqa: PLR2004
- error_msg = f"Invalid number of values in default value {type(default_value)}."
- raise ValueError(error_msg)
- self._add_integer_range_input(value_type, unit, default_value)
- elif value_type == ValueType.VERSIONED_TEXT:
- if not isinstance(default_value, str) and default_value is not None:
- raise ValueError(base_error_msg)
- self._add_versioned_text_input(default_value)
- else:
- msg = f"Invalid input value type for plan regulation: {value_type}"
- raise ValueError(msg)
+ for info in self.regulation.additional_information:
+ self._add_additional_info(info)
- def _init_additional_information_btn(self):
+ def _init_additional_information_btn(self) -> None:
informations_dict: dict[str, QMenu] = {}
- add_later: dict[str, list[str]] = {}
-
- def _add_action(informations_dict: dict[str, QMenu], parent_id: str, info_type: str):
- action = informations_dict[parent_id].addAction(info_type)
- action.triggered.connect(lambda _: self._add_additional_info(info_type))
-
- # Iterate code layer and build menus
- for feature in get_layer_by_name("Lisätiedonlaji").getFeatures():
- if feature["level"] == 1:
- menu = QMenu(feature["name"][LANGUAGE], self)
- informations_dict[feature["id"]] = menu
- else:
- parent_id = feature["parent_id"]
- info_type = feature["name"][LANGUAGE]
- if parent_id in informations_dict:
- _add_action(informations_dict, parent_id, info_type)
- else:
- if parent_id not in add_later:
- add_later[parent_id] = []
- add_later[parent_id].append(info_type)
- for parent_id, additional_information_types in add_later.items():
- for info_type in additional_information_types:
- _add_action(informations_dict, parent_id, info_type)
+
+ def _add_action(parent_id: str, info_type: str, display_name: str):
+ action = informations_dict[parent_id].addAction(display_name)
+ action.triggered.connect(
+ lambda _: self._add_additional_info(
+ AdditionalInformation(config=AdditionalInformationConfigLibrary.get_config_by_code(info_type))
+ )
+ )
+
+ ai_config_library = AdditionalInformationConfigLibrary.get_instance()
+ for top_level_code in ai_config_library.top_level_codes:
+ top_level_config = ai_config_library.get_config_by_code(top_level_code)
+
+ menu = QMenu(top_level_config.name, self)
+ informations_dict[top_level_code] = menu
+
+ for child_code in top_level_config.children:
+ config = ai_config_library.get_config_by_code(child_code)
+ _add_action(top_level_code, config.additional_information_type, config.name)
# Create main menu for btn and add submenus
additional_information_type_menu = QMenu(self)
@@ -176,95 +145,61 @@ def _init_other_information_btn(self):
def _on_expand_hide_btn_clicked(self):
if self.expanded:
for label, value_widget in self.widgets:
- self.form_layout.removeWidget(label)
+ # self.form_layout.removeWidget(label)
label.hide()
- self.form_layout.removeWidget(value_widget)
+ # self.form_layout.removeWidget(value_widget)
value_widget.hide()
+ self.additional_information_frame.hide()
self.expand_hide_btn.setArrowType(Qt.ArrowType.DownArrow)
self.expanded = False
else:
for label, value_widget in self.widgets:
- self.form_layout.addRow(label, value_widget)
+ # self.form_layout.addRow(label, value_widget)
label.show()
value_widget.show()
+ self.additional_information_frame.show()
self.expand_hide_btn.setArrowType(Qt.ArrowType.UpArrow)
self.expanded = True
- def _add_widgets(self, label: QLabel, widget: QWidget):
+ def _add_widget(self, label: QLabel, widget: QWidget):
self.form_layout.addRow(label, widget)
self.widgets.append((label, widget))
if not self.expanded:
self._on_expand_hide_btn_clicked()
- def _add_decimal_input(self, value_type: ValueType, unit: str | None, default_value: float | None = None):
- positive = value_type == ValueType.POSITIVE_DECIMAL
- self.value_widget = DecimalInputWidget(default_value, unit, positive)
- self._add_widgets(QLabel("Arvo"), self.value_widget)
-
- def _add_integer_input(self, value_type: ValueType, unit: str | None, default_value: float | None = None):
- positive = value_type == ValueType.POSITIVE_INTEGER
- default_value = int(default_value) if default_value else None
- self.value_widget = IntegerInputWidget(default_value=default_value, unit=unit, positive=positive)
- self._add_widgets(QLabel("Arvo"), self.value_widget)
-
- def _add_integer_range_input(
- self, value_type: ValueType, unit: str | None, default_value: tuple[int, int] | list[int] | None = None
- ):
- # NOTE: There is no ValueType.INTEGER_RANGE currently, so is always positive
- positive = value_type == ValueType.POSITIVE_INTEGER_RANGE
- self.value_widget = IntegerRangeInputWidget(default_value, unit, positive)
- self._add_widgets(QLabel("Arvo"), self.value_widget)
-
- def _add_versioned_text_input(self, default_value: str | None = None):
- self.value_widget = MultilineTextInputWidget(default_value=default_value, editable=True)
- self._add_widgets(QLabel("Arvo"), self.value_widget)
-
- def _add_additional_info(self, info_type: str, default_value: str | float | None = None):
- # TODO: Extend and make sure all additional information types are properly handled
-
- # NOTE: Now info type is the name / readable version when this is triggered by user
- # Might need to refactor this later..
- name = AdditionalInformationTypeLayer.get_additional_information_name(info_type)
- self._add_widgets(QLabel("Lisätiedonlaji"), SinglelineTextInputWidget(name, False))
-
- # NOTE: Does not support multiple instances of same additional information kind,
- # for example if multiple Käyttötarkoituskohdistus are added, they overwrite each other
- value_widget = None
- if name == "Käyttötarkoituskohdistus":
- if isinstance(default_value, float):
- iface.messageBar().pushWarning("Warning: ", f"Unexpected value type for {name}: float")
- else:
- value_widget = SinglelineTextInputWidget(default_value, True)
- self._add_widgets(QLabel(name), value_widget)
-
- self.additional_information_widgets[info_type] = value_widget
+ def _add_additional_info(self, additional_information: AdditionalInformation):
+ widget = AdditionalInformationWidget(additional_information, self)
+ widget.delete_signal.connect(lambda widget: self.additional_information_widgets.remove(widget)) ####
+
+ self.additional_information_frame.show()
+
+ self.additional_information_widgets.append(widget)
+ self.additional_information_layout.addWidget(widget)
def _add_regulation_number(self):
if not self.regulation_number_widget:
self.regulation_number_widget = IntegerInputWidget(None, None, True)
- self._add_widgets(QLabel("Määräysnumero"), self.regulation_number_widget)
+ self._add_widget(QLabel("Määräysnumero"), self.regulation_number_widget)
def _add_file(self):
widget = QgsFileWidget()
- self._add_widgets(QLabel("Liiteasiakirja"), widget)
+ self._add_widget(QLabel("Liiteasiakirja"), widget)
self.file_widgets.append(widget)
def _add_topic_tag(self):
self.topic_tag_widget = SinglelineTextInputWidget(None, True)
- self._add_widgets(QLabel("Aihetunniste"), self.topic_tag_widget)
+ self._add_widget(QLabel("Aihetunniste"), self.topic_tag_widget)
def _add_theme(self, theme_name: str):
self.theme_widget = SinglelineTextInputWidget(theme_name, False)
- self._add_widgets(QLabel("Kaavoitusteema"), self.theme_widget)
+ self._add_widget(QLabel("Kaavoitusteema"), self.theme_widget)
def into_model(self) -> Regulation:
return Regulation(
config=self.config,
- value=self.value_widget.get_value() if self.value_widget else None,
+ value=self.value_widget_manager.into_model() if self.value_widget_manager else None,
regulation_number=self.regulation_number_widget.get_value() if self.regulation_number_widget else None,
- additional_information={
- name: widget.get_value() for name, widget in self.additional_information_widgets.items() if widget
- },
+ additional_information=[ai_widget.into_model() for ai_widget in self.additional_information_widgets],
files=[file.filePath() for file in self.file_widgets],
theme=self.theme_widget.get_value() if self.theme_widget else None,
topic_tag=self.topic_tag_widget.get_value() if self.topic_tag_widget else None,
diff --git a/arho_feature_template/gui/components/plan_regulation_widget.ui b/arho_feature_template/gui/components/plan_regulation_widget.ui
index 8bcc1ba..ec97b39 100644
--- a/arho_feature_template/gui/components/plan_regulation_widget.ui
+++ b/arho_feature_template/gui/components/plan_regulation_widget.ui
@@ -6,8 +6,8 @@
0
0
- 489
- 131
+ 487
+ 195
@@ -127,6 +127,57 @@
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 9
+ 75
+ true
+
+
+
+ Lisätiedot:
+
+
+
+ -
+
+
+ 6
+
+
+ 9
+
+
+
+
+
+
diff --git a/arho_feature_template/gui/components/value_input_widgets.py b/arho_feature_template/gui/components/value_input_widgets.py
new file mode 100644
index 0000000..673b8e8
--- /dev/null
+++ b/arho_feature_template/gui/components/value_input_widgets.py
@@ -0,0 +1,238 @@
+from __future__ import annotations
+
+import logging
+
+from qgis.gui import QgsDoubleSpinBox, QgsSpinBox
+from qgis.PyQt.QtWidgets import QFormLayout, QHBoxLayout, QLabel, QLineEdit, QSizePolicy, QTextEdit, QWidget
+
+from arho_feature_template.core.models import AttributeValue, AttributeValueDataType
+
+logger = logging.getLogger(__name__)
+
+
+def initialize_numeric_input_widget(
+ widget: QgsSpinBox | QgsDoubleSpinBox,
+ default_value: float | None,
+ unit: str | None,
+ positive: bool, # noqa: FBT001
+):
+ if unit:
+ widget.setSuffix(f" {unit}")
+
+ if positive:
+ widget.setMinimum(0)
+ else:
+ widget.setMinimum(-99999)
+
+ widget.setMaximum(99999)
+
+ if default_value:
+ widget.setValue(default_value)
+
+ widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
+
+
+def initialize_text_input_widget(
+ widget: QTextEdit | QLineEdit,
+ default_value: str | None,
+ editable: bool, # noqa: FBT001
+):
+ if default_value:
+ widget.setText(str(default_value))
+
+ if not editable:
+ widget.setReadOnly(True)
+
+
+class DecimalInputWidget(QgsDoubleSpinBox):
+ def __init__(
+ self,
+ default_value: float | None = None,
+ unit: str | None = None,
+ positive: bool = False, # noqa: FBT001, FBT002
+ ):
+ super().__init__()
+ self.unit = unit
+ initialize_numeric_input_widget(self, default_value, unit, positive)
+
+ def get_value(self) -> float:
+ return self.value()
+
+
+class IntegerInputWidget(QgsSpinBox):
+ def __init__(
+ self,
+ default_value: int | None = None,
+ unit: str | None = None,
+ positive: bool = False, # noqa: FBT001, FBT002
+ ):
+ super().__init__()
+ self.unit = unit
+ initialize_numeric_input_widget(self, default_value, unit, positive)
+
+ def get_value(self) -> int:
+ return self.value()
+
+
+class IntegerRangeInputWidget(QWidget):
+ def __init__(
+ self,
+ range_min: int | None = None,
+ range_max: int | None = None,
+ unit: str | None = None,
+ positive: bool = False, # noqa: FBT001, FBT002
+ ):
+ super().__init__()
+
+ self.min_widget = IntegerInputWidget(range_min, unit, positive)
+ self.max_widget = IntegerInputWidget(range_max, unit, positive)
+ layout = QHBoxLayout()
+ layout.addWidget(self.min_widget)
+ layout.addWidget(QLabel("-"))
+ layout.addWidget(self.max_widget)
+ self.setLayout(layout)
+
+ def get_value(self) -> tuple[int, int]:
+ return (self.min_widget.get_value(), self.max_widget.get_value())
+
+
+class SinglelineTextInputWidget(QLineEdit):
+ def __init__(
+ self,
+ default_value: str | None = None,
+ editable: bool = False, # noqa: FBT001, FBT002
+ ):
+ super().__init__()
+ initialize_text_input_widget(self, default_value, editable)
+
+ def get_value(self) -> str | None:
+ return self.text() if self.text() else None
+
+
+class MultilineTextInputWidget(QTextEdit):
+ def __init__(
+ self,
+ default_value: str | None = None,
+ editable: bool = True, # noqa: FBT001, FBT002
+ ):
+ super().__init__()
+ initialize_text_input_widget(self, default_value, editable)
+
+ def get_value(self) -> str | None:
+ text = self.toPlainText()
+ return text if text else None
+
+
+class CodeInputWidget(QWidget):
+ def __init__(self, title: str | None = None, code_list: str | None = None, code_value: str | None = None):
+ super().__init__()
+
+ self.title_widget = SinglelineTextInputWidget(default_value=title, editable=True)
+ self.code_list_widget = SinglelineTextInputWidget(default_value=code_list, editable=True)
+ self.code_value_widget = SinglelineTextInputWidget(default_value=code_value, editable=True)
+
+ layout = QFormLayout()
+ layout.addRow("Otsikko", self.title_widget)
+ layout.addRow("Koodisto", self.code_list_widget)
+ layout.addRow("Koodiarvo", self.code_value_widget)
+ self.setLayout(layout)
+
+ def get_value(self) -> tuple[str | None, str | None, str | None]:
+ title = self.title_widget.get_value()
+ code_list = self.code_list_widget.get_value()
+ code_value = self.code_value_widget.get_value()
+ return (title if title else None, code_list if code_list else None, code_value if code_value else None)
+
+
+class ValueWidgetManager:
+ def __init__(self, value: AttributeValue | None, default_value: AttributeValue):
+ if value is None:
+ value = AttributeValue()
+ self.value_data_type = default_value.value_data_type
+ self.unit = default_value.unit
+ self.default_value = default_value
+
+ self.value_widget: QWidget | None = None
+
+ if self.value_data_type in (AttributeValueDataType.DECIMAL, AttributeValueDataType.POSITIVE_DECIMAL):
+ positive = self.value_data_type == AttributeValueDataType.POSITIVE_DECIMAL
+ self.value_widget = DecimalInputWidget(
+ value.numeric_value or default_value.numeric_value, self.unit, positive
+ )
+
+ elif self.value_data_type in (AttributeValueDataType.NUMERIC, AttributeValueDataType.POSITIVE_NUMERIC):
+ positive = self.value_data_type == AttributeValueDataType.POSITIVE_NUMERIC
+ numeric_value = value.numeric_value or default_value.numeric_value
+ self.value_widget = IntegerInputWidget(
+ default_value=int(numeric_value) if numeric_value is not None else None,
+ unit=self.unit,
+ positive=positive,
+ )
+
+ elif self.value_data_type in (
+ AttributeValueDataType.NUMERIC_RANGE,
+ AttributeValueDataType.POSITIVE_NUMERIC_RANGE,
+ ):
+ positive = self.value_data_type == AttributeValueDataType.POSITIVE_NUMERIC_RANGE
+
+ value_min = value.numeric_range_min or default_value.numeric_range_min
+ value_max = value.numeric_range_max or default_value.numeric_range_max
+ self.value_widget = IntegerRangeInputWidget(
+ int(value_min) if value_min is not None else None,
+ int(value_max) if value_max is not None else None,
+ self.unit,
+ positive,
+ )
+
+ elif self.value_data_type == AttributeValueDataType.LOCALIZED_TEXT:
+ self.value_widget = MultilineTextInputWidget(default_value=default_value.text_value, editable=True)
+
+ elif self.value_data_type == AttributeValueDataType.CODE:
+ self.value_widget = CodeInputWidget(
+ value.code_title or default_value.code_title,
+ value.code_list or default_value.code_list,
+ value.code_value or default_value.code_value,
+ )
+
+ else:
+ logger.warning("No value input implemented for data type: %s", default_value.value_data_type)
+
+ def into_model(self) -> AttributeValue:
+ if self.value_data_type in (
+ AttributeValueDataType.DECIMAL,
+ AttributeValueDataType.POSITIVE_DECIMAL,
+ AttributeValueDataType.NUMERIC,
+ AttributeValueDataType.POSITIVE_NUMERIC,
+ ):
+ return AttributeValue(
+ value_data_type=self.value_data_type,
+ numeric_value=self.value_widget.get_value() if self.value_widget else None,
+ unit=self.unit,
+ )
+
+ if self.value_data_type in (
+ AttributeValueDataType.NUMERIC_RANGE,
+ AttributeValueDataType.POSITIVE_NUMERIC_RANGE,
+ ):
+ range_min, range_max = self.value_widget.get_value() if self.value_widget else (None, None)
+ return AttributeValue(
+ value_data_type=self.value_data_type,
+ numeric_range_min=range_min,
+ numeric_range_max=range_max,
+ unit=self.unit,
+ )
+
+ if self.value_data_type == AttributeValueDataType.LOCALIZED_TEXT:
+ return AttributeValue(
+ value_data_type=self.value_data_type,
+ text_value=self.value_widget.toPlainText() if self.value_widget else None,
+ text_syntax=None,
+ )
+
+ if self.value_data_type == AttributeValueDataType.CODE:
+ title, code_list, code_value = self.value_widget.get_value() if self.value_widget else (None, None, None)
+ return AttributeValue(
+ value_data_type=self.value_data_type, code_title=title, code_list=code_list, code_value=code_value
+ )
+
+ return AttributeValue()
diff --git a/arho_feature_template/project/layers/__init__.py b/arho_feature_template/project/layers/__init__.py
index 0f75997..8de94ec 100644
--- a/arho_feature_template/project/layers/__init__.py
+++ b/arho_feature_template/project/layers/__init__.py
@@ -8,7 +8,7 @@
from arho_feature_template.utils.project_utils import get_vector_layer_from_project
if TYPE_CHECKING:
- from qgis.core import QgsFeature, QgsFeatureIterator
+ from qgis.core import QgsFeature
class AbstractLayer(ABC):
@@ -31,7 +31,7 @@ def get_from_project(cls) -> QgsVectorLayer:
return get_vector_layer_from_project(cls.name)
@classmethod
- def get_features(cls) -> QgsFeatureIterator:
+ def get_features(cls):
return cls.get_from_project().getFeatures()
@classmethod
diff --git a/arho_feature_template/project/layers/code_layers.py b/arho_feature_template/project/layers/code_layers.py
index cd6bce8..611555d 100644
--- a/arho_feature_template/project/layers/code_layers.py
+++ b/arho_feature_template/project/layers/code_layers.py
@@ -48,7 +48,7 @@ class AdditionalInformationTypeLayer(AbstractCodeLayer):
@classmethod
def get_additional_information_name(cls, info_type: str) -> str | None:
attribute_value = cls.get_attribute_value_by_another_attribute_value("name", "value", info_type)
- return cast(str, attribute_value[LANGUAGE]) if attribute_value else None
+ return cast(str, attribute_value.get(LANGUAGE)) if attribute_value else None
class PlanRegulationGroupTypeLayer(AbstractCodeLayer):
diff --git a/arho_feature_template/project/layers/plan_layers.py b/arho_feature_template/project/layers/plan_layers.py
index 3657541..67b2345 100644
--- a/arho_feature_template/project/layers/plan_layers.py
+++ b/arho_feature_template/project/layers/plan_layers.py
@@ -2,15 +2,17 @@
import logging
from abc import abstractmethod
-from numbers import Number
from string import Template
from textwrap import dedent
from typing import Any, ClassVar, Generator
-from qgis.core import NULL, QgsExpressionContextUtils, QgsFeature, QgsProject, QgsVectorLayerUtils
+from qgis.core import QgsExpressionContextUtils, QgsFeature, QgsProject, QgsVectorLayerUtils
from qgis.utils import iface
from arho_feature_template.core.models import (
+ AdditionalInformation,
+ AdditionalInformationConfigLibrary,
+ AttributeValue,
Document,
Plan,
PlanFeature,
@@ -22,7 +24,7 @@
from arho_feature_template.exceptions import FeatureNotFoundError, LayerEditableError, LayerNotFoundError
from arho_feature_template.project.layers import AbstractLayer
from arho_feature_template.project.layers.code_layers import PlanRegulationTypeLayer
-from arho_feature_template.utils.misc_utils import LANGUAGE
+from arho_feature_template.utils.misc_utils import LANGUAGE, get_active_plan_id
logger = logging.getLogger(__name__)
@@ -77,8 +79,8 @@ def feature_from_model(cls, model: Plan) -> QgsFeature:
feature = cls.initialize_feature_from_model(model)
feature.setGeometry(model.geom)
- feature["name"] = {LANGUAGE: model.name}
- feature["description"] = {LANGUAGE: model.description}
+ feature["name"] = {LANGUAGE: model.name if model.name else None}
+ feature["description"] = {LANGUAGE: model.description if model.description else None}
feature["permanent_plan_identifier"] = model.permanent_plan_identifier
feature["record_number"] = model.record_number
feature["producers_plan_identifier"] = model.producers_plan_identifier
@@ -97,8 +99,8 @@ def model_from_feature(cls, feature: QgsFeature) -> Plan:
]
return Plan(
geom=feature.geometry(),
- name=feature["name"][LANGUAGE],
- description=feature["description"][LANGUAGE],
+ name=feature["name"].get(LANGUAGE) if feature["name"] else None,
+ description=feature["description"].get(LANGUAGE) if feature["description"] else None,
permanent_plan_identifier=feature["permanent_plan_identifier"],
record_number=feature["record_number"],
producers_plan_identifier=feature["producers_plan_identifier"],
@@ -121,7 +123,7 @@ def model_from_feature(cls, feature: QgsFeature) -> Plan:
@classmethod
def get_plan_name(cls, plan_id: str) -> str:
attribute_value = cls.get_attribute_value_by_another_attribute_value("name", "id", plan_id)
- return attribute_value[LANGUAGE] if attribute_value else "Nimetön"
+ return attribute_value.get(LANGUAGE, "Nimetön") if attribute_value else "Nimetön"
class PlanFeatureLayer(AbstractPlanLayer):
@@ -133,14 +135,10 @@ def feature_from_model(cls, model: PlanFeature, plan_id: str | None = None) -> Q
feature = cls.initialize_feature_from_model(model)
feature.setGeometry(model.geom)
- feature["name"] = {LANGUAGE: model.name if model.name else ""}
+ feature["name"] = {LANGUAGE: model.name if model.name else None}
feature["type_of_underground_id"] = model.type_of_underground_id
- feature["description"] = {LANGUAGE: model.description if model.description else ""}
- feature["plan_id"] = (
- plan_id
- if plan_id
- else QgsExpressionContextUtils.projectScope(QgsProject.instance()).variable("active_plan_id")
- )
+ feature["description"] = {LANGUAGE: model.description if model.description else None}
+ feature["plan_id"] = plan_id if plan_id else get_active_plan_id()
return feature
@@ -154,8 +152,8 @@ def model_from_feature(cls, feature: QgsFeature) -> PlanFeature:
geom=feature.geometry(),
type_of_underground_id=feature["type_of_underground_id"],
layer_name=cls.get_from_project().name(),
- name=feature["name"][LANGUAGE],
- description=feature["description"][LANGUAGE],
+ name=feature["name"].get(LANGUAGE) if feature["name"] else None,
+ description=feature["description"].get(LANGUAGE),
regulation_groups=[
RegulationGroupLayer.model_from_feature(feat) for feat in regulation_group_features if feat is not None
],
@@ -198,7 +196,7 @@ def feature_from_model(cls, model: RegulationGroup, plan_id: str | None = None)
feature = cls.initialize_feature_from_model(model)
feature["short_name"] = model.short_name if model.short_name else None
- feature["name"] = {LANGUAGE: model.name}
+ feature["name"] = {LANGUAGE: model.name if model.name else None}
feature["type_of_plan_regulation_group_id"] = model.type_code_id
feature["plan_id"] = (
plan_id
@@ -212,7 +210,7 @@ def feature_from_model(cls, model: RegulationGroup, plan_id: str | None = None)
def model_from_feature(cls, feature: QgsFeature) -> RegulationGroup:
return RegulationGroup(
type_code_id=feature["type_of_plan_regulation_group_id"],
- name=feature["name"][LANGUAGE],
+ name=feature["name"].get(LANGUAGE) if feature["name"] else None,
short_name=feature["short_name"],
color_code=None,
group_number=None,
@@ -313,6 +311,38 @@ def get_dangling_associations( # by_feature
return [assoc for assoc in associations if assoc["plan_regulation_group_id"] not in updated_group_ids]
+def attribute_value_model_from_feature(feature: QgsFeature) -> AttributeValue:
+ return AttributeValue(
+ value_data_type=feature["value_data_type"],
+ numeric_value=feature["numeric_value"],
+ numeric_range_min=feature["numeric_range_min"],
+ numeric_range_max=feature["numeric_range_max"],
+ unit=feature["unit"],
+ text_value=feature["text_value"].get(LANGUAGE) if feature["text_value"] else None,
+ text_syntax=feature["text_syntax"],
+ code_list=feature["code_list"],
+ code_value=feature["code_value"],
+ code_title=feature["code_title"].get(LANGUAGE) if feature["code_title"] else None,
+ height_reference_point=feature["height_reference_point"],
+ )
+
+
+def update_feature_from_attribute_value_model(value: AttributeValue | None, feature: QgsFeature):
+ if value is None:
+ return
+ feature["value_data_type"] = value.value_data_type.value if value.value_data_type is not None else None
+ feature["numeric_value"] = value.numeric_value
+ feature["numeric_range_min"] = value.numeric_range_min
+ feature["numeric_range_max"] = value.numeric_range_max
+ feature["unit"] = value.unit
+ feature["text_value"] = {LANGUAGE: value.text_value if value.text_value else None}
+ feature["text_syntax"] = value.text_syntax
+ feature["code_list"] = value.code_list
+ feature["code_value"] = value.code_value
+ feature["code_title"] = {LANGUAGE: value.code_title if value.code_title else None}
+ feature["height_reference_point"] = value.height_reference_point
+
+
class PlanRegulationLayer(AbstractPlanLayer):
name = "Kaavamääräys"
filter_template = Template(
@@ -332,15 +362,13 @@ class PlanRegulationLayer(AbstractPlanLayer):
def feature_from_model(cls, model: Regulation) -> QgsFeature:
feature = cls.initialize_feature_from_model(model)
- feature["plan_regulation_group_id"] = model.regulation_group_id_
+ feature["plan_regulation_group_id"] = model.regulation_group_id
feature["type_of_plan_regulation_id"] = model.config.id
- feature["unit"] = model.config.unit
- feature["text_value"] = {LANGUAGE: model.value if isinstance(model.value, str) else ""}
- feature["numeric_value"] = model.value if isinstance(model.value, Number) else NULL
- # feature["name"] = {LANGUAGE: model.topic_tag if model.topic_tag else ""}
+
+ feature["subject_identifiers"] = model.topic_tag.split(",") if model.topic_tag else None
feature["type_of_verbal_plan_regulation_id"] = model.verbal_regulation_type_id
- feature["id"] = model.id_ if model.id_ else feature["id"]
- # feature["plan_theme_id"]
+
+ update_feature_from_attribute_value_model(model.value, feature)
return feature
@@ -356,14 +384,18 @@ def model_from_feature(cls, feature: QgsFeature) -> Regulation:
raise ValueError(msg)
return Regulation(
config=config,
- # Assuming only either text_value or numeric_value is defined
- value=feature["text_value"][LANGUAGE] if feature["text_value"][LANGUAGE] else feature["numeric_value"],
- additional_information=None,
+ value=attribute_value_model_from_feature(feature),
+ additional_information=[
+ AdditionalInformationLayer.model_from_feature(ai_feat)
+ for ai_feat in AdditionalInformationLayer.get_features_by_attribute_value(
+ "plan_regulation_id", feature["id"]
+ )
+ ],
regulation_number=None,
files=[],
theme=None,
topic_tag=None,
- regulation_group_id_=feature["plan_regulation_group_id"],
+ regulation_group_id=feature["plan_regulation_group_id"],
verbal_regulation_type_id=feature["type_of_verbal_plan_regulation_id"],
id_=feature["id"],
)
@@ -403,8 +435,8 @@ class PlanPropositionLayer(AbstractPlanLayer):
def feature_from_model(cls, model: Proposition) -> QgsFeature:
feature = cls.initialize_feature_from_model(model)
- feature["text_value"] = {LANGUAGE: model.value}
- feature["plan_regulation_group_id"] = model.regulation_group_id_
+ feature["text_value"] = {LANGUAGE: model.value if model.value else None}
+ feature["plan_regulation_group_id"] = model.regulation_group_id
feature["ordering"] = model.proposition_number
feature["plan_theme_id"] = model.theme_id
feature["id"] = model.id_ if model.id_ else feature["id"]
@@ -414,8 +446,8 @@ def feature_from_model(cls, model: Proposition) -> QgsFeature:
@classmethod
def model_from_feature(cls, feature: QgsFeature) -> Proposition:
return Proposition(
- value=feature["text_value"][LANGUAGE],
- regulation_group_id_=feature["plan_regulation_group_id"],
+ value=feature["text_value"].get(LANGUAGE) if feature["text_value"] else None,
+ regulation_group_id=feature["plan_regulation_group_id"],
proposition_number=feature["ordering"],
theme_id=feature["plan_theme_id"],
id_=feature["id"],
@@ -445,7 +477,7 @@ class DocumentLayer(AbstractPlanLayer):
def feature_from_model(cls, model: Document) -> QgsFeature:
feature = cls.initialize_feature_from_model(model)
- feature["name"] = {LANGUAGE: model.name}
+ feature["name"] = {LANGUAGE: model.name if model.name else None}
feature["url"] = model.url
feature["type_of_document_id"] = model.type_of_document_id
feature["decision"] = model.decision
@@ -464,7 +496,7 @@ def feature_from_model(cls, model: Document) -> QgsFeature:
@classmethod
def model_from_feature(cls, feature: QgsFeature) -> Document:
return Document(
- name=feature["name"][LANGUAGE],
+ name=feature["name"].get(LANGUAGE) if feature["name"] else None,
url=feature["url"],
type_of_document_id=feature["type_of_document_id"],
decision=feature["decision"],
@@ -494,6 +526,46 @@ class SourceDataLayer(AbstractPlanLayer):
filter_template = Template("plan_id = '$plan_id'")
+class AdditionalInformationLayer(AbstractPlanLayer):
+ name = "Kaavamääräyksen lisätiedot"
+ filter_template = Template(
+ dedent(
+ """\
+ EXISTS (
+ SELECT 1
+ FROM
+ hame.plan_regulation_group prg
+ JOIN hame.plan_regulation pr
+ ON (prg.id = pr.plan_regulation_group_id)
+ WHERE
+ hame.additional_information.plan_regulation_id = pr.id
+ AND prg.plan_id = '$plan_id'
+ )"""
+ )
+ )
+
+ @classmethod
+ def feature_from_model(cls, model: AdditionalInformation) -> QgsFeature:
+ feature = cls.initialize_feature_from_model(model)
+
+ feature["plan_regulation_id"] = model.plan_regulation_id
+ feature["type_additional_information_id"] = model.config.id
+
+ update_feature_from_attribute_value_model(model.value, feature)
+
+ return feature
+
+ @classmethod
+ def model_from_feature(cls, feature: QgsFeature) -> AdditionalInformation:
+ return AdditionalInformation(
+ config=AdditionalInformationConfigLibrary.get_config_by_id(feature["type_additional_information_id"]),
+ id_=feature["id"],
+ plan_regulation_id=feature["plan_regulation_id"],
+ type_additional_information_id=feature["type_additional_information_id"],
+ value=attribute_value_model_from_feature(feature),
+ )
+
+
plan_layers = AbstractPlanLayer.__subclasses__()
plan_layers.remove(PlanFeatureLayer)
diff --git a/arho_feature_template/resources/libraries/additional_information.yaml b/arho_feature_template/resources/libraries/additional_information.yaml
new file mode 100644
index 0000000..6c37486
--- /dev/null
+++ b/arho_feature_template/resources/libraries/additional_information.yaml
@@ -0,0 +1,27 @@
+version: 1
+additional_information:
+ - code: poisluettavaKayttotarkoitus
+ data_type: Code
+ - code: kerroksetJotaMaaraysKoskee
+ data_type: NumericRange
+ - code: kayttotarkoituskohdistus
+ data_type: Code
+ - code: kayttotarkoituksenOsuusKerrosalastaK-m2
+ data_type: PositiveNumeric
+ unit: k-m2
+ - code: kayttotarkoituksenOsuusKerrosalastaPros
+ data_type: PositiveNumeric
+ unit: "%"
+ - code: kayttotarkoituksenOsuusRakennustilavuudestaK-m3
+ data_type: PositiveNumeric
+ unit: m3
+ - code: kayttotarkoituksenOsuusRakennustilavuudestaPros
+ data_type: PositiveNumeric
+ unit: "%"
+ - code: kayttotarkoituksenOsuusMaapintaAlasta
+ data_type: PositiveNumeric
+ unit: "%"
+ - code: rakennusluvanPeruste
+ data_type: Code
+ - code: autopaikkojenSijoittuminenSallittu
+ data_type: PositiveNumeric
diff --git a/arho_feature_template/resources/libraries/feature_templates/schema/lisatiedonlaji.schema.json b/arho_feature_template/resources/libraries/feature_templates/schema/lisatiedonlaji.schema.json
new file mode 100644
index 0000000..c6ca261
--- /dev/null
+++ b/arho_feature_template/resources/libraries/feature_templates/schema/lisatiedonlaji.schema.json
@@ -0,0 +1,118 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://gispocoding.com/featuretemplate/lisatiedonlaji.schema.json",
+ "title": "Kaavamääräyksen lisätiedon konfiguraatio",
+ "type": "object",
+ "required": [
+ "version",
+ "additional_information"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "version": {
+ "description": "The version of the template library syntax used in the file",
+ "type": "integer"
+ },
+ "additional_information": {
+ "description": "The list of configuations of additiona information objects",
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/additional_information_object"
+ }
+ }
+ },
+ "$defs": {
+ "additional_information_object": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "code": {
+ "description": "Kaavamääräyksen lisätiedon laji",
+ "enum": [
+ "tyyppi",
+ "hairionTorjuntatarve",
+ "merkittavyys",
+ "eriTahojenTarpeisiinVaraaminen",
+ "ymparistomuutoksenLaji",
+ "rakentamisenOhjaus",
+ "valiaikainenMaarays",
+ "vaihtoehtoinen",
+ "ohjeellinenSijainti",
+ "ehdottomastiNoudatettava",
+ "poisluettavaKayttotarkoitus",
+ "meluntorjuntatarve",
+ "ymparistoTaiMaisemavaurionKorjaustarve",
+ "terveyshaitanPoistamistarve",
+ "kansainvalinen",
+ "valtakunnallinen",
+ "maakunnallinen",
+ "seudullinen",
+ "alueellinen",
+ "paikallinen",
+ "varattuKunnanKayttoon",
+ "varattuValtionKayttoon",
+ "varattuYleiseenKayttoon",
+ "varattuYksityiseenKayttoon",
+ "varattuAlueenSisaiseenKayttoon",
+ "kayttotarkoituksenOsuusMaapintaAlasta",
+ "kerroksetJotaMaaraysKoskee",
+ "kayttotarkoituskohdistus",
+ "kayttotarkoituksenOsuusKerrosalastaK-m2",
+ "kayttotarkoituksenOsuusKerrosalastaPros",
+ "kayttotarkoituksenOsuusRakennustilavuudestaK-m3",
+ "kayttotarkoituksenOsuusRakennustilavuudestaPros",
+ "rakennusluvanPeruste",
+ "rakentamistapaohjeHuomioitava",
+ "sitovaTonttijakoLaadittava",
+ "tontilleAjoSallittu",
+ "VaarallistenKemikaalienValmistusJaVarastointiSallittu",
+ "ymparistoAsettaaToiminnanLaadulleErityisiaVaatimuksia",
+ "melunLahde",
+ "autopaikkojenSijoittuminenSallittu",
+ "maanalainenTila",
+ "kayttotarkoitus",
+ "yhteystarve",
+ "paakayttotarkoitus",
+ "osaAlue",
+ "olemassaolo",
+ "olemassaOleva",
+ "sailytettava",
+ "uusi",
+ "olennaisestiMuuttuva",
+ "kehittaminen",
+ "eheytettavaTaiTiivistettava",
+ "reservialue",
+ "merkittavastiParannettava",
+ "kehitettava"
+ ]
+ },
+ "data_type": {
+ "enum": [
+ "LocalizedText",
+ "Text",
+ "Numeric",
+ "NumericRange",
+ "PositiveNumeric",
+ "PositiveNumericRange",
+ "Decimal",
+ "DecimalRange",
+ "PositiveDecimal",
+ "PositiveDecimalRange",
+ "Code",
+ "Identifier",
+ "SpotElevation",
+ "TimePeriod",
+ "TimePeriodDateOnly"
+ ]
+ },
+ "unit": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "data_type"
+ ]
+ }
+ }
+}
diff --git a/arho_feature_template/resources/libraries/kaavamaaraykset.yaml b/arho_feature_template/resources/libraries/kaavamaaraykset.yaml
index d5593c5..03d63a1 100644
--- a/arho_feature_template/resources/libraries/kaavamaaraykset.yaml
+++ b/arho_feature_template/resources/libraries/kaavamaaraykset.yaml
@@ -1,6 +1,5 @@
version: 1
plan_regulations:
-
# Asumisen alue (valmis)
# Taajamatoiminnan alue (valmis)
@@ -14,7 +13,7 @@ plan_regulations:
category_only: true
- regulation_code: vihertehokkuus
- value_type: positiivinen desimaali
+ value_type: PositiveDecimal
unit: m2/m2
# Maa- ja metsätalousalue (valmis)
@@ -68,121 +67,121 @@ plan_regulations:
category_only: true
- regulation_code: kadunTaiTienNimi
- value_type: kieliversioitu teksti
+ value_type: LocalizedText
- regulation_code: torinTaiKatuaukionNimi
- value_type: kieliversioitu teksti
+ value_type: LocalizedText
- regulation_code: puistonTaiMuunYleisenAlueenNimi
- value_type: kieliversioitu teksti
+ value_type: LocalizedText
- regulation_code: kaupunginTaiKunnanosanNimi
- value_type: kieliversioitu teksti
+ value_type: LocalizedText
# Aluetunnukset (valmis)
- regulation_code: aluetunnukset
category_only: true
- regulation_code: korttelinNumero
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: tontinTaiRakennuspaikanNumero
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: kaupunginTaiKunnanosanNumero
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
# Rakentamisen määrä (valmis)
- regulation_code: rakentamisenMaara
category_only: true
- regulation_code: sallittuKerrosala
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: k-m2
- regulation_code: sallittuRakennustilavuus
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: m3
- regulation_code: tehokkuusluku
- value_type: positiivinen desimaali
+ value_type: PositiveDecimal
unit: k-m2/m2
- regulation_code: rakentamisenSuhdeAlueenPintaAlaan
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: prosentti
- regulation_code: valjyysluku
- value_type: positiivinen desimaali
+ value_type: PositiveDecimal
unit: m2/k-m2
- regulation_code: maanpaallinenKerroslukuLuku
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: maanpaallinenKerroslukuArvovali
- value_type: positiivinen kokonaisluku arvoväli
+ value_type: PositiveNumericRange
- regulation_code: maanalainenKerroslukuLuku
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: maanalainenKerroslukuArvovali
- value_type: positiivinen kokonaisluku arvoväli
+ value_type: PositiveNumericRange
- regulation_code: kellarinSallittuOsuusKerrosalasta
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: prosentti
- regulation_code: ullakonSallittuOsuusKerrosalasta
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: prosentti
- regulation_code: asuntojenMaara
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: rakennuspaikkojenMaara
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: tuulivoimaloidenMaara
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
# Korkeusasema (valmis)
- regulation_code: korkeusasema
category_only: true
- regulation_code: maanpinnanKorkeusasema
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: vesikatonYlimmanKohdanKorkeusasema
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: julkisivupinnanJaVesikatonLeikkauskohdanKorkeusasema
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: julkisivunEnimmaiskorkeus
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: rakennustenRakenteidenJaLaitteidenYlinKorkeusasema
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: alinPainovoimainenViemarointitaso
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: rakennustenRakenteidenJaLaitteidenAlinKorkeusasema
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: kosteudelleAlttiidenRakenteidenAlinRakentamiskorkeus
- value_type: desimaali
+ value_type: Decimal
unit: m
- regulation_code: tuulivoimalanEnimmaiskorkeus
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: m
# Rakentamisen tapa (valmis)
@@ -190,11 +189,11 @@ plan_regulations:
category_only: true
- regulation_code: kattokaltevuus
- value_type: desimaali
+ value_type: Decimal
unit: °
- regulation_code: aaneneristavyys
- value_type: positiivinen desimaali
+ value_type: PositiveDecimal
unit: dB
# Liikenteen suureet (valmis)
@@ -205,25 +204,25 @@ plan_regulations:
category_only: true
- regulation_code: autopaikkojenMaara
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: autopaikkojenMaaraAsuntoaKohden
- value_type: positiivinen desimaali
+ value_type: PositiveDecimal
- regulation_code: kerrosneliomaaraYhtaAutopaikkaaKohden
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: k-m2
- regulation_code: pyorapaikkojenMaara
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
- regulation_code: pyorapaikkojenMaaraAsuntoaKohden
- value_type: positiivinen desimaali
+ value_type: PositiveDecimal
- regulation_code: kerrosneliomaaraYhtaPyorapaikkaaKohden
- value_type: positiivinen kokonaisluku
+ value_type: PositiveNumeric
unit: k-m2
# Sanallinen määräys
- regulation_code: sanallinenMaarays
- value_type: kieliversioitu teksti
+ value_type: LocalizedText
diff --git a/arho_feature_template/resources/libraries/regulation_groups/katja_asemakaava.yaml b/arho_feature_template/resources/libraries/regulation_groups/katja_asemakaava.yaml
index 6566e37..5be0e32 100644
--- a/arho_feature_template/resources/libraries/regulation_groups/katja_asemakaava.yaml
+++ b/arho_feature_template/resources/libraries/regulation_groups/katja_asemakaava.yaml
@@ -1,2082 +1,2075 @@
name: Asemakaavan kaavamääräysryhmät (Katja)
version: 1
categories:
-
- category_code: aluevaraukset
name: Aluevaraukset
plan_regulation_groups:
-
- - name: Asuinrakennusten alue
- geometry: Alue
- short_name: A
- plan_regulations:
- - regulation_code: asumisenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Asuinkerrostalojen alue
- geometry: Alue
- short_name: AK
- plan_regulations:
- - regulation_code: asuinkerrostaloalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Asuinpientalojen alue
- geometry: Alue
- short_name: AP
- plan_regulations:
- - regulation_code: asuinpientaloalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Rivitalojen ja muiden kytkettyjen asuinrakennusten alue
- geometry: Alue
- short_name: AR
- plan_regulations:
- - regulation_code: rivitalojenJaMuidenKytkettyjenAsuinpientalojenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Erillispientalojen alue
- geometry: Alue
- short_name: AO
- plan_regulations:
- - regulation_code: erillistenAsuinpientalojenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Asuin-, liike- ja toimistorakennusten alue
- geometry: Alue
- short_name: AL
- plan_regulations:
- - regulation_code: asumisenAlue
- additional_information:
- - type: paakayttotarkoitus
- - regulation_code: liikerakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - regulation_code: toimistorakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Asumista palveleva yhteiskäyttöinen alue
- geometry: Alue
- short_name: AH
- plan_regulations:
- - regulation_code: asumistaPalvelevaYhteiskayttoinenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maatilojen talouskeskusten alue
- geometry: Alue
- short_name: AM
- plan_regulations:
- - regulation_code: maatilanTalouskeskuksenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Keskustatoimintojen alue
- geometry: Alue
- short_name: C
- plan_regulations:
- - regulation_code: keskustatoimintojenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Yleisten rakennusten alue
- geometry: Alue
- short_name: Y
- plan_regulations:
- - regulation_code: yleistenRakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Palvelurakennusten alue
- geometry: Alue
- short_name: P
- plan_regulations:
- - regulation_code: palvelujenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- # p. 4
- - name: Julkisten palvelurakennusten alue
- geometry: Alue
- short_name: PY
- plan_regulations:
- - regulation_code: palvelujenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Lähipalvelurakennusten alue
- geometry: Alue
- short_name: PL
- plan_regulations:
- - regulation_code: palvelujenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: paikallinen
-
- - name: Julkisten lähipalvelurakennusten alue
- geometry: Alue
- short_name: YL
- plan_regulations:
- - regulation_code: palvelujenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
- - type: paikallinen
-
- - name: Toimistorakennusten alue
- geometry: Alue
- short_name: KT
- plan_regulations:
- - regulation_code: toimistorakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Hallinto- ja virastorakennusten alue
- geometry: Alue
- short_name: YH
- plan_regulations:
- - regulation_code: toimistorakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Opetusrakennusten alue
- geometry: Alue
- short_name: YO
- plan_regulations:
- - regulation_code: opetusrakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Terveydenhuolto- ja sosiaalipalvelurakennusten alue
- geometry: Alue
- short_name: YS
- plan_regulations:
- - regulation_code: hoitoalanRakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Kulttuuritoiminnan rakennusten alue
- geometry: Alue
- short_name: YY
- plan_regulations:
- - regulation_code: kulttuurirakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Museorakennusten alue
- geometry: Alue
- short_name: YM
- plan_regulations:
- - regulation_code: museorakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Kirkkojen ja muiden seurakunnallisten rakennusten alue
- geometry: Alue
- short_name: YK
- plan_regulations:
- - regulation_code: uskonnollistenYhteisojenRakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Urheilutoimintaa palvelevien rakennusten alue
- geometry: Alue
- short_name: YU
- plan_regulations:
- - regulation_code: urheiluJaLiikuntaRakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Huvi- ja viihderakennusten alue
- geometry: Alue
- short_name: PV
- plan_regulations:
- - regulation_code: huviJaViihdeRakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Liike- ja toimistorakennusten alue
- geometry: Alue
- short_name: K
- plan_regulations:
- - regulation_code: liikerakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
- - regulation_code: toimistorakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Liikerakennusten alue
- geometry: Alue
- short_name: KL
- plan_regulations:
- - regulation_code: liikerakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Myymälärakennusten alue
- geometry: Alue
- short_name: KLM
- plan_regulations:
- - regulation_code: myymalarakennustenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Myymälärakennusten alue, jolle saa sijoittaa vähittäiskaupan suuryksikön
- geometry: Alue
- short_name: KM
- plan_regulations:
- - regulation_code: vahittaiskaupanSuuryksikko
- additional_information:
- - type: paakayttotarkoitus
-
- # p. 5
- - name: Myymälärakennusten alue, jolle saa sijoittaa vähittäiskaupan myymäläkeskittymän
- geometry: Alue
- short_name: KMK
- plan_regulations:
- - regulation_code: vahittaiskaupanMyymalakeskittyma
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Toimitilarakennusten alue
- geometry: Alue
- short_name: KTY
- plan_regulations:
- - regulation_code: toimitilojenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Teollisuus- ja varastorakennusten alue
- geometry: Alue
- short_name: T
- plan_regulations:
- - regulation_code: teollisuusalue
- additional_information:
- - type: paakayttotarkoitus
- - regulation_code: varastoalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Teollisuusrakennusten alue
- geometry: Alue
- short_name: TT
- plan_regulations:
- - regulation_code: teollisuusalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Teollisuusrakennusten alue, jolla ympäristö asettaa toiminnan laadulle erityisiä vaatimuksia
- geometry: Alue
- short_name: TY
- plan_regulations:
- - regulation_code: teollisuusalue
- additional_information:
- - type: paakayttotarkoitus
- - type: ymparistoAsettaaToiminnanLaadulleErityisiaVaatimuksia
-
- - name: Varastorakennusten alue
- geometry: Alue
- short_name: TV
- plan_regulations:
- - regulation_code: varastoalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Teollisuus- ja varastorakennusten alue, jolla on/jolle saa sijoittaa merkittävän, vaarallisia kemikaaleja valmistavan tai varastoivan laitoksen
- geometry: Alue
- short_name: T/kem
- plan_regulations:
- - regulation_code: teollisuusalue
- additional_information:
- - type: paakayttotarkoitus
- - type: VaarallistenKemikaalienValmistusJaVarastointiSallittu
- - regulation_code: varastoalue
- additional_information:
- - type: paakayttotarkoitus
- - type: VaarallistenKemikaalienValmistusJaVarastointiSallittu
-
- - name: Virkistysalue
- geometry: Alue
- short_name: V
- plan_regulations:
- - regulation_code: virkistysalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Puisto
- geometry: Alue
- short_name: VP
- plan_regulations:
- - regulation_code: puisto
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Lähivirkistysalue
- geometry: Alue
- short_name: VL
- plan_regulations:
- - regulation_code: lahivirkistysalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Leikkipuisto
- geometry: Alue
- short_name: VK
- plan_regulations:
- - regulation_code: leikkipuisto
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Urheilu- ja virkistyspalvelujen alue
- geometry: Alue
- short_name: VU
- plan_regulations:
- - regulation_code: urheiluJaVirkistyspalvelujenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Retkeily- ja ulkoilualue
- geometry: Alue
- short_name: VR
- plan_regulations:
- - regulation_code: retkeilyJaUlkoiluAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Uimaranta-alue
- geometry: Alue
- short_name: VV
- plan_regulations:
- - regulation_code: uimaranta
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Vapaa-ajan asumisen ja matkailun alue
- geometry: Alue
- short_name: R
- plan_regulations:
- - regulation_code: vapaaAjanAsumisenJaMatkailunAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Vapaa-ajan asumisen alue
- geometry: Alue
- short_name: RA
- plan_regulations:
- - regulation_code: vapaaAjanAsumisenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Matkailupalvelujen
- geometry: Alue
- short_name: RM
- plan_regulations:
- - regulation_code: matkailupalvelujenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- # p. 6
- - name: Leirintäalue
- geometry: Alue
- short_name: RL
- plan_regulations:
- - regulation_code: leirintaAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Asuntovaunualue
- geometry: Alue
- short_name: RV
- plan_regulations:
- - regulation_code: asuntovaunualue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Siirtolapuutarha-alue
- geometry: Alue
- short_name: RSP
- plan_regulations:
- - regulation_code: siirtolapuutarhaAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Palstaviljelyalue
- geometry: Alue
- short_name: RP
- plan_regulations:
- - regulation_code: palstaviljelyalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Liikennealue
- geometry: Alue
- short_name: L
- plan_regulations:
- - regulation_code: liikennealue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maantieliikenteen alue
- geometry: Alue
- short_name: LT
- plan_regulations:
- - regulation_code: maantie
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maantiehen kuuluva jalankulku- ja pyörätie
- geometry: Alue
- short_name: LT/jkpp
- plan_regulations:
- - regulation_code: maantie
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Katu
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Jalankululle varattu katu
- geometry: Alue
- short_name: jk
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: jalankulkualue
-
- - name: Jalankululle ja pyöräilylle varattu katu
- geometry: Alue
- short_name: jk/pp
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: jalankulkualue
- - type: kayttotarkoituskohdistus
- value: pyorailyalue
-
- - name: Jalankululle varattu katu, jolla huoltoajo on sallittu
- geometry: Alue
- short_name: jk/h
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: jalankulkualue
- - type: kayttotarkoituskohdistus
- value: huoltoajoalue
-
- - name: Jalankululle varattu katu, jolla tontille/rakennuspaikalle ajo on sallittu
- geometry: Alue
- short_name: jk/ajo
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: jalankulkualue
- - type: tontilleAjoSallittu
-
- - name: Joukkoliikenteelle varattu katu
- geometry: Alue
- short_name: jl
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: joukkoliikenteenAlue
-
- # p. 7
- - name: Raitioliikenteelle varattu katu
- geometry: Alue
- short_name: rt
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: raitiotie
-
- - name: Pihakatu
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: pihakatu
-
- - name: Hidaskatu
- geometry: Alue
- short_name: jl
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: hidaskatu
-
- - name: Katuaukio tai tori
- geometry: Alue
- short_name: hk
- plan_regulations:
- - regulation_code: katu
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: katuaukioTaiTori
-
- - name: Rautatieliikenteen alue
- geometry: Alue
- short_name: LR
- plan_regulations:
- - regulation_code: raideliikenteenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Lentokenttäalue
- geometry: Alue
- short_name: LL
- plan_regulations:
- - regulation_code: lentoliikenteenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Satama-alue
- geometry: Alue
- short_name: LS
- plan_regulations:
- - regulation_code: satama-alue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Kanava-alue
- geometry: Alue
- short_name: LK
- plan_regulations:
- - regulation_code: satama-alue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Venesatama-alue
- geometry: Alue
- short_name: LV
- plan_regulations:
- - regulation_code: venesatama
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Venevalkama
- geometry: Alue
- short_name: LVV
- plan_regulations:
- - regulation_code: venevalkama
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Yleinen pysäköintialue
- geometry: Alue
- short_name: LP
- plan_regulations:
- - regulation_code: pysakoinninAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Yleisten pysäköintilaitosten alue
- geometry: Alue
- short_name: LPY
- plan_regulations:
- - regulation_code: pysakointilaitostenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: varattuYleiseenKayttoon
-
- - name: Autopaikkojen alue
- geometry: Alue
- short_name: LPA
- plan_regulations:
- - regulation_code: pysakoinninAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Pysäköintilaitosten alue
- geometry: Alue
- short_name: LPL
- plan_regulations:
- - regulation_code: pysakointilaitostenAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Huoltoaseman alue
- geometry: Alue
- short_name: LH
- plan_regulations:
- - regulation_code: huoltoasemaAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Henkilöliikenteen terminaalialue
- geometry: Alue
- short_name: LHA
- plan_regulations:
- - regulation_code: henkiloliikenteenTerminaalialue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Tavaraliikenteen terminaalialue
- geometry: Alue
- short_name: LTA
- plan_regulations:
- - regulation_code: tavaraliikenteenTerminaalialue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Varikkoalue
- geometry: Alue
- short_name: LVH
- plan_regulations:
- - regulation_code: varikko
- additional_information:
- - type: paakayttotarkoitus
-
- # p. 8
- - name: Erityisalue
- geometry: Alue
- short_name: E
- plan_regulations:
- - regulation_code: erityisalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Yhdyskuntateknistä huoltoa palvelevien rakennusten ja laitosten alue
- geometry: Alue
- short_name: ET
- plan_regulations:
- - regulation_code: yhdyskuntateknisenHuollonAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Energiahuollon alue
- geometry: Alue
- short_name: EN
- plan_regulations:
- - regulation_code: energiahuollonAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Tuulivoimatuotantoon tarkoitettu energiatuotannon alue
- geometry: Alue
- short_name: EN/tv
- plan_regulations:
- - regulation_code: energiahuollonAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: tuulivoimalaAlue
-
- - name: Aurinkovoimatuotantoon tarkoitettu energiatuotannon alue
- geometry: Alue
- short_name: EN/au
- plan_regulations:
- - regulation_code: energiahuollonAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: kayttotarkoituskohdistus
- value: aurinkovoimalaAlue
-
- - name: Jätteenkäsittelyalue
- geometry: Alue
- short_name: EJ
- plan_regulations:
- - regulation_code: jatteenkasittelyalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Jätehuollon alue
- geometry: Alue
- short_name: EJH
- plan_regulations:
- - regulation_code: jatehuollonAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maa-ainesten ottoalue
- geometry: Alue
- short_name: EO
- plan_regulations:
- - regulation_code: maaAinestenOttoalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Turvetuotannon alue
- geometry: Alue
- short_name: EOT
- plan_regulations:
- - regulation_code: turvetuotantoalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Kaivosalue
- geometry: Alue
- short_name: EK
- plan_regulations:
- - regulation_code: kaivosalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Moottoriurheilun alue
- geometry: Alue
- short_name: EU
- plan_regulations:
- - regulation_code: moottoriurheilualue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Mastoalue
- geometry: Alue
- short_name: EMT
- plan_regulations:
- - regulation_code: mastoalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Ampumarata-alue
- geometry: Alue
- short_name: EA
- plan_regulations:
- - regulation_code: ampumarataAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Puolustusvoimien alue
- geometry: Alue
- short_name: EP
- plan_regulations:
- - regulation_code: puolustusvoimienAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Hautausmaa-alue
- geometry: Alue
- short_name: EH
- plan_regulations:
- - regulation_code: hautausmaa
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Suojaviheralue
- geometry: Alue
- short_name: EV
- plan_regulations:
- - regulation_code: suojaviheralue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Suojelualue
- geometry: Alue
- short_name: S
- plan_regulations:
- - regulation_code: suojelualue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Luonnonsuojelualue
- geometry: Alue
- short_name: SL
- plan_regulations:
- - regulation_code: luonnonsuojelualue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Muinaismuistoalue
- geometry: Alue
- short_name: SM
- plan_regulations:
- - regulation_code: muinaismuistoAlue
- additional_information:
- - type: paakayttotarkoitus
-
- # p. 9
- - name: Rakennussuojelualue
- geometry: Alue
- short_name: SR
- plan_regulations:
- - regulation_code: rakennussuojelualue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Rakennusperinnön suojelemisesta annetun lain nojalla suojeltujen rakennusten alue
- geometry: Alue
- short_name: SRS
- plan_regulations:
- - regulation_code: rakennusperinnonSuojelemisestaAnnetunLainNojallaSuojeltuRakennus
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maa- ja metsätalousalue
- geometry: Alue
- short_name: M
- plan_regulations:
- - regulation_code: maaJaMetsatalousAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Metsätalousalue
- geometry: Alue
- short_name: MM
- plan_regulations:
- - regulation_code: metsatalousalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maatalousalue
- geometry: Alue
- short_name: MT
- plan_regulations:
- - regulation_code: maatalousalue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Kotieläintalouden suuryksikön alue
- geometry: Alue
- short_name: ME
- plan_regulations:
- - regulation_code: kotielaintaloudenSuuryksikonAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Puutarha- ja kasvihuonealue
- geometry: Alue
- short_name: MP
- plan_regulations:
- - regulation_code: puutarhaJaKasvihuoneAlue
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Pelto
- geometry: Alue
- short_name: MTP
- plan_regulations:
- - regulation_code: pelto
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maisemallisesti arvokas peltoalue
- geometry: Alue
- short_name: MA
- plan_regulations:
- - regulation_code: pelto
- additional_information:
- - type: paakayttotarkoitus
- - regulation_code: maisemallisestiArvokasAlue
- additional_information: # NOTE: Check if paakayttotarkoitus applies to both
- - type: paakayttotarkoitus
-
- - name: Maa- ja metsätalousalue, jolla on erityistä ulkoilun ohjaamistarvetta
- geometry: Alue
- short_name: MU
- plan_regulations:
- - regulation_code: maaJaMetsatalousalueJollaErityistaUlkoilunOhjaamistarvetta
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Maa- ja metsätalousalue, jolla on erityisiä ympäristöarvoja
- geometry: Alue
- short_name: MY
- plan_regulations:
- - regulation_code: maaJaMetsatalousalueJollaErityisiaYmparistoarvoja
- additional_information:
- - type: paakayttotarkoitus
-
- - name: Vesialue
- geometry: Alue
- short_name: W
- plan_regulations:
- - regulation_code: vesialue
- additional_information:
- - type: paakayttotarkoitus
-
- # p. 10
+ - name: Asuinrakennusten alue
+ geometry: Alue
+ short_name: A
+ plan_regulations:
+ - regulation_code: asumisenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Asuinkerrostalojen alue
+ geometry: Alue
+ short_name: AK
+ plan_regulations:
+ - regulation_code: asuinkerrostaloalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Asuinpientalojen alue
+ geometry: Alue
+ short_name: AP
+ plan_regulations:
+ - regulation_code: asuinpientaloalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Rivitalojen ja muiden kytkettyjen asuinrakennusten alue
+ geometry: Alue
+ short_name: AR
+ plan_regulations:
+ - regulation_code: rivitalojenJaMuidenKytkettyjenAsuinpientalojenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Erillispientalojen alue
+ geometry: Alue
+ short_name: AO
+ plan_regulations:
+ - regulation_code: erillistenAsuinpientalojenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Asuin-, liike- ja toimistorakennusten alue
+ geometry: Alue
+ short_name: AL
+ plan_regulations:
+ - regulation_code: asumisenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - regulation_code: liikerakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - regulation_code: toimistorakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Asumista palveleva yhteiskäyttöinen alue
+ geometry: Alue
+ short_name: AH
+ plan_regulations:
+ - regulation_code: asumistaPalvelevaYhteiskayttoinenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maatilojen talouskeskusten alue
+ geometry: Alue
+ short_name: AM
+ plan_regulations:
+ - regulation_code: maatilanTalouskeskuksenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Keskustatoimintojen alue
+ geometry: Alue
+ short_name: C
+ plan_regulations:
+ - regulation_code: keskustatoimintojenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Yleisten rakennusten alue
+ geometry: Alue
+ short_name: Y
+ plan_regulations:
+ - regulation_code: yleistenRakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Palvelurakennusten alue
+ geometry: Alue
+ short_name: P
+ plan_regulations:
+ - regulation_code: palvelujenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ # p. 4
+ - name: Julkisten palvelurakennusten alue
+ geometry: Alue
+ short_name: PY
+ plan_regulations:
+ - regulation_code: palvelujenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Lähipalvelurakennusten alue
+ geometry: Alue
+ short_name: PL
+ plan_regulations:
+ - regulation_code: palvelujenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: paikallinen
+
+ - name: Julkisten lähipalvelurakennusten alue
+ geometry: Alue
+ short_name: YL
+ plan_regulations:
+ - regulation_code: palvelujenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+ - type: paikallinen
+
+ - name: Toimistorakennusten alue
+ geometry: Alue
+ short_name: KT
+ plan_regulations:
+ - regulation_code: toimistorakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Hallinto- ja virastorakennusten alue
+ geometry: Alue
+ short_name: YH
+ plan_regulations:
+ - regulation_code: toimistorakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Opetusrakennusten alue
+ geometry: Alue
+ short_name: YO
+ plan_regulations:
+ - regulation_code: opetusrakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Terveydenhuolto- ja sosiaalipalvelurakennusten alue
+ geometry: Alue
+ short_name: YS
+ plan_regulations:
+ - regulation_code: hoitoalanRakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Kulttuuritoiminnan rakennusten alue
+ geometry: Alue
+ short_name: YY
+ plan_regulations:
+ - regulation_code: kulttuurirakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Museorakennusten alue
+ geometry: Alue
+ short_name: YM
+ plan_regulations:
+ - regulation_code: museorakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Kirkkojen ja muiden seurakunnallisten rakennusten alue
+ geometry: Alue
+ short_name: YK
+ plan_regulations:
+ - regulation_code: uskonnollistenYhteisojenRakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Urheilutoimintaa palvelevien rakennusten alue
+ geometry: Alue
+ short_name: YU
+ plan_regulations:
+ - regulation_code: urheiluJaLiikuntaRakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Huvi- ja viihderakennusten alue
+ geometry: Alue
+ short_name: PV
+ plan_regulations:
+ - regulation_code: huviJaViihdeRakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Liike- ja toimistorakennusten alue
+ geometry: Alue
+ short_name: K
+ plan_regulations:
+ - regulation_code: liikerakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - regulation_code: toimistorakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Liikerakennusten alue
+ geometry: Alue
+ short_name: KL
+ plan_regulations:
+ - regulation_code: liikerakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Myymälärakennusten alue
+ geometry: Alue
+ short_name: KLM
+ plan_regulations:
+ - regulation_code: myymalarakennustenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Myymälärakennusten alue, jolle saa sijoittaa vähittäiskaupan suuryksikön
+ geometry: Alue
+ short_name: KM
+ plan_regulations:
+ - regulation_code: vahittaiskaupanSuuryksikko
+ additional_information:
+ - type: paakayttotarkoitus
+
+ # p. 5
+ - name: Myymälärakennusten alue, jolle saa sijoittaa vähittäiskaupan myymäläkeskittymän
+ geometry: Alue
+ short_name: KMK
+ plan_regulations:
+ - regulation_code: vahittaiskaupanMyymalakeskittyma
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Toimitilarakennusten alue
+ geometry: Alue
+ short_name: KTY
+ plan_regulations:
+ - regulation_code: toimitilojenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Teollisuus- ja varastorakennusten alue
+ geometry: Alue
+ short_name: T
+ plan_regulations:
+ - regulation_code: teollisuusalue
+ additional_information:
+ - type: paakayttotarkoitus
+ - regulation_code: varastoalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Teollisuusrakennusten alue
+ geometry: Alue
+ short_name: TT
+ plan_regulations:
+ - regulation_code: teollisuusalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Teollisuusrakennusten alue, jolla ympäristö asettaa toiminnan laadulle erityisiä vaatimuksia
+ geometry: Alue
+ short_name: TY
+ plan_regulations:
+ - regulation_code: teollisuusalue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: ymparistoAsettaaToiminnanLaadulleErityisiaVaatimuksia
+
+ - name: Varastorakennusten alue
+ geometry: Alue
+ short_name: TV
+ plan_regulations:
+ - regulation_code: varastoalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Teollisuus- ja varastorakennusten alue, jolla on/jolle saa sijoittaa merkittävän, vaarallisia kemikaaleja valmistavan tai varastoivan laitoksen
+ geometry: Alue
+ short_name: T/kem
+ plan_regulations:
+ - regulation_code: teollisuusalue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: VaarallistenKemikaalienValmistusJaVarastointiSallittu
+ - regulation_code: varastoalue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: VaarallistenKemikaalienValmistusJaVarastointiSallittu
+
+ - name: Virkistysalue
+ geometry: Alue
+ short_name: V
+ plan_regulations:
+ - regulation_code: virkistysalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Puisto
+ geometry: Alue
+ short_name: VP
+ plan_regulations:
+ - regulation_code: puisto
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Lähivirkistysalue
+ geometry: Alue
+ short_name: VL
+ plan_regulations:
+ - regulation_code: lahivirkistysalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Leikkipuisto
+ geometry: Alue
+ short_name: VK
+ plan_regulations:
+ - regulation_code: leikkipuisto
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Urheilu- ja virkistyspalvelujen alue
+ geometry: Alue
+ short_name: VU
+ plan_regulations:
+ - regulation_code: urheiluJaVirkistyspalvelujenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Retkeily- ja ulkoilualue
+ geometry: Alue
+ short_name: VR
+ plan_regulations:
+ - regulation_code: retkeilyJaUlkoiluAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Uimaranta-alue
+ geometry: Alue
+ short_name: VV
+ plan_regulations:
+ - regulation_code: uimaranta
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Vapaa-ajan asumisen ja matkailun alue
+ geometry: Alue
+ short_name: R
+ plan_regulations:
+ - regulation_code: vapaaAjanAsumisenJaMatkailunAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Vapaa-ajan asumisen alue
+ geometry: Alue
+ short_name: RA
+ plan_regulations:
+ - regulation_code: vapaaAjanAsumisenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Matkailupalvelujen
+ geometry: Alue
+ short_name: RM
+ plan_regulations:
+ - regulation_code: matkailupalvelujenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ # p. 6
+ - name: Leirintäalue
+ geometry: Alue
+ short_name: RL
+ plan_regulations:
+ - regulation_code: leirintaAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Asuntovaunualue
+ geometry: Alue
+ short_name: RV
+ plan_regulations:
+ - regulation_code: asuntovaunualue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Siirtolapuutarha-alue
+ geometry: Alue
+ short_name: RSP
+ plan_regulations:
+ - regulation_code: siirtolapuutarhaAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Palstaviljelyalue
+ geometry: Alue
+ short_name: RP
+ plan_regulations:
+ - regulation_code: palstaviljelyalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Liikennealue
+ geometry: Alue
+ short_name: L
+ plan_regulations:
+ - regulation_code: liikennealue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maantieliikenteen alue
+ geometry: Alue
+ short_name: LT
+ plan_regulations:
+ - regulation_code: maantie
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maantiehen kuuluva jalankulku- ja pyörätie
+ geometry: Alue
+ short_name: LT/jkpp
+ plan_regulations:
+ - regulation_code: maantie
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Katu
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Jalankululle varattu katu
+ geometry: Alue
+ short_name: jk
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: jalankulkualue
+
+ - name: Jalankululle ja pyöräilylle varattu katu
+ geometry: Alue
+ short_name: jk/pp
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: jalankulkualue
+ - type: kayttotarkoituskohdistus
+ code_value: pyorailyalue
+
+ - name: Jalankululle varattu katu, jolla huoltoajo on sallittu
+ geometry: Alue
+ short_name: jk/h
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: jalankulkualue
+ - type: kayttotarkoituskohdistus
+ code_value: huoltoajoalue
+
+ - name: Jalankululle varattu katu, jolla tontille/rakennuspaikalle ajo on sallittu
+ geometry: Alue
+ short_name: jk/ajo
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: jalankulkualue
+ - type: tontilleAjoSallittu
+
+ - name: Joukkoliikenteelle varattu katu
+ geometry: Alue
+ short_name: jl
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: joukkoliikenteenAlue
+
+ # p. 7
+ - name: Raitioliikenteelle varattu katu
+ geometry: Alue
+ short_name: rt
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: raitiotie
+
+ - name: Pihakatu
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: pihakatu
+
+ - name: Hidaskatu
+ geometry: Alue
+ short_name: jl
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: hidaskatu
+
+ - name: Katuaukio tai tori
+ geometry: Alue
+ short_name: hk
+ plan_regulations:
+ - regulation_code: katu
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: katuaukioTaiTori
+
+ - name: Rautatieliikenteen alue
+ geometry: Alue
+ short_name: LR
+ plan_regulations:
+ - regulation_code: raideliikenteenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Lentokenttäalue
+ geometry: Alue
+ short_name: LL
+ plan_regulations:
+ - regulation_code: lentoliikenteenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Satama-alue
+ geometry: Alue
+ short_name: LS
+ plan_regulations:
+ - regulation_code: satama-alue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Kanava-alue
+ geometry: Alue
+ short_name: LK
+ plan_regulations:
+ - regulation_code: satama-alue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Venesatama-alue
+ geometry: Alue
+ short_name: LV
+ plan_regulations:
+ - regulation_code: venesatama
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Venevalkama
+ geometry: Alue
+ short_name: LVV
+ plan_regulations:
+ - regulation_code: venevalkama
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Yleinen pysäköintialue
+ geometry: Alue
+ short_name: LP
+ plan_regulations:
+ - regulation_code: pysakoinninAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Yleisten pysäköintilaitosten alue
+ geometry: Alue
+ short_name: LPY
+ plan_regulations:
+ - regulation_code: pysakointilaitostenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: varattuYleiseenKayttoon
+
+ - name: Autopaikkojen alue
+ geometry: Alue
+ short_name: LPA
+ plan_regulations:
+ - regulation_code: pysakoinninAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Pysäköintilaitosten alue
+ geometry: Alue
+ short_name: LPL
+ plan_regulations:
+ - regulation_code: pysakointilaitostenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Huoltoaseman alue
+ geometry: Alue
+ short_name: LH
+ plan_regulations:
+ - regulation_code: huoltoasemaAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Henkilöliikenteen terminaalialue
+ geometry: Alue
+ short_name: LHA
+ plan_regulations:
+ - regulation_code: henkiloliikenteenTerminaalialue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Tavaraliikenteen terminaalialue
+ geometry: Alue
+ short_name: LTA
+ plan_regulations:
+ - regulation_code: tavaraliikenteenTerminaalialue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Varikkoalue
+ geometry: Alue
+ short_name: LVH
+ plan_regulations:
+ - regulation_code: varikko
+ additional_information:
+ - type: paakayttotarkoitus
+
+ # p. 8
+ - name: Erityisalue
+ geometry: Alue
+ short_name: E
+ plan_regulations:
+ - regulation_code: erityisalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Yhdyskuntateknistä huoltoa palvelevien rakennusten ja laitosten alue
+ geometry: Alue
+ short_name: ET
+ plan_regulations:
+ - regulation_code: yhdyskuntateknisenHuollonAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Energiahuollon alue
+ geometry: Alue
+ short_name: EN
+ plan_regulations:
+ - regulation_code: energiahuollonAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Tuulivoimatuotantoon tarkoitettu energiatuotannon alue
+ geometry: Alue
+ short_name: EN/tv
+ plan_regulations:
+ - regulation_code: energiahuollonAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: tuulivoimalaAlue
+
+ - name: Aurinkovoimatuotantoon tarkoitettu energiatuotannon alue
+ geometry: Alue
+ short_name: EN/au
+ plan_regulations:
+ - regulation_code: energiahuollonAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: kayttotarkoituskohdistus
+ code_value: aurinkovoimalaAlue
+
+ - name: Jätteenkäsittelyalue
+ geometry: Alue
+ short_name: EJ
+ plan_regulations:
+ - regulation_code: jatteenkasittelyalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Jätehuollon alue
+ geometry: Alue
+ short_name: EJH
+ plan_regulations:
+ - regulation_code: jatehuollonAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maa-ainesten ottoalue
+ geometry: Alue
+ short_name: EO
+ plan_regulations:
+ - regulation_code: maaAinestenOttoalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Turvetuotannon alue
+ geometry: Alue
+ short_name: EOT
+ plan_regulations:
+ - regulation_code: turvetuotantoalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Kaivosalue
+ geometry: Alue
+ short_name: EK
+ plan_regulations:
+ - regulation_code: kaivosalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Moottoriurheilun alue
+ geometry: Alue
+ short_name: EU
+ plan_regulations:
+ - regulation_code: moottoriurheilualue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Mastoalue
+ geometry: Alue
+ short_name: EMT
+ plan_regulations:
+ - regulation_code: mastoalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Ampumarata-alue
+ geometry: Alue
+ short_name: EA
+ plan_regulations:
+ - regulation_code: ampumarataAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Puolustusvoimien alue
+ geometry: Alue
+ short_name: EP
+ plan_regulations:
+ - regulation_code: puolustusvoimienAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Hautausmaa-alue
+ geometry: Alue
+ short_name: EH
+ plan_regulations:
+ - regulation_code: hautausmaa
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Suojaviheralue
+ geometry: Alue
+ short_name: EV
+ plan_regulations:
+ - regulation_code: suojaviheralue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Suojelualue
+ geometry: Alue
+ short_name: S
+ plan_regulations:
+ - regulation_code: suojelualue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Luonnonsuojelualue
+ geometry: Alue
+ short_name: SL
+ plan_regulations:
+ - regulation_code: luonnonsuojelualue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Muinaismuistoalue
+ geometry: Alue
+ short_name: SM
+ plan_regulations:
+ - regulation_code: muinaismuistoAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ # p. 9
+ - name: Rakennussuojelualue
+ geometry: Alue
+ short_name: SR
+ plan_regulations:
+ - regulation_code: rakennussuojelualue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Rakennusperinnön suojelemisesta annetun lain nojalla suojeltujen rakennusten alue
+ geometry: Alue
+ short_name: SRS
+ plan_regulations:
+ - regulation_code: rakennusperinnonSuojelemisestaAnnetunLainNojallaSuojeltuRakennus
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maa- ja metsätalousalue
+ geometry: Alue
+ short_name: M
+ plan_regulations:
+ - regulation_code: maaJaMetsatalousAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Metsätalousalue
+ geometry: Alue
+ short_name: MM
+ plan_regulations:
+ - regulation_code: metsatalousalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maatalousalue
+ geometry: Alue
+ short_name: MT
+ plan_regulations:
+ - regulation_code: maatalousalue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Kotieläintalouden suuryksikön alue
+ geometry: Alue
+ short_name: ME
+ plan_regulations:
+ - regulation_code: kotielaintaloudenSuuryksikonAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Puutarha- ja kasvihuonealue
+ geometry: Alue
+ short_name: MP
+ plan_regulations:
+ - regulation_code: puutarhaJaKasvihuoneAlue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Pelto
+ geometry: Alue
+ short_name: MTP
+ plan_regulations:
+ - regulation_code: pelto
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maisemallisesti arvokas peltoalue
+ geometry: Alue
+ short_name: MA
+ plan_regulations:
+ - regulation_code: pelto
+ additional_information:
+ - type: paakayttotarkoitus
+ - regulation_code: maisemallisestiArvokasAlue
+ additional_information: # NOTE: Check if paakayttotarkoitus applies to both
+ - type: paakayttotarkoitus
+
+ - name: Maa- ja metsätalousalue, jolla on erityistä ulkoilun ohjaamistarvetta
+ geometry: Alue
+ short_name: MU
+ plan_regulations:
+ - regulation_code: maaJaMetsatalousalueJollaErityistaUlkoilunOhjaamistarvetta
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Maa- ja metsätalousalue, jolla on erityisiä ympäristöarvoja
+ geometry: Alue
+ short_name: MY
+ plan_regulations:
+ - regulation_code: maaJaMetsatalousalueJollaErityisiaYmparistoarvoja
+ additional_information:
+ - type: paakayttotarkoitus
+
+ - name: Vesialue
+ geometry: Alue
+ short_name: W
+ plan_regulations:
+ - regulation_code: vesialue
+ additional_information:
+ - type: paakayttotarkoitus
+
+ # p. 10
- category_code: aluevarauksetYmparistoltaSailytettavat
name: Ympäristöltään säilytettävät aluevaraukset
plan_regulation_groups:
-
- - name: Asuntovaltainen alue, jolla ympäristö säilytetään
- geometry: Alue
- short_name: A/s
- plan_regulations:
- - regulation_code: asumisenAlue
- additional_information:
- - type: paakayttotarkoitus
- - type: sailytettava
-
- # p. 11
+ - name: Asuntovaltainen alue, jolla ympäristö säilytetään
+ geometry: Alue
+ short_name: A/s
+ plan_regulations:
+ - regulation_code: asumisenAlue
+ additional_information:
+ - type: paakayttotarkoitus
+ - type: sailytettava
+
+ # p. 11
- category_code: rakennusalat
name: Rakennusalat, alueiden erityisominaisuudet ja alueen osat
plan_regulation_groups:
-
- - name: Kunnan tai kaupunginosan raja
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: kunnanTaiKaupunginOsa
- additional_information:
- - type: osaAlue
-
- - name: Korttelialue tai korttelialueen osa
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: korttelialueTaiKorttelialueenOsa # NOTE: Check p. 11 if "korttelialue"
- additional_information:
- - type: osaAlue
-
- - name: Sitovan tonttijaon mukainen tontti
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: ohjeellinenRakennuspaikka
- additional_information:
- - type: osaAlue
-
- - name: Ohjeellinen tontti/rakennuspaikka
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: sitovanTonttijaonMukainenTontti
- additional_information:
- - type: osaAlue
-
- - name: Rakennusala
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: rakennusala
- additional_information:
- - type: osaAlue
-
- - name: Auton säilytyspaikan rakennusala
- geometry: Alue
- short_name: a
- plan_regulations:
- - regulation_code: rakennusala
- additional_information:
- - type: osaAlue
- - type: kayttotarkoituskohdistus
- value: pysakoinninAlue
-
- - name: Rakennusala, jolle saa sijoittaa lasten päiväkodin
- geometry: Alue
- short_name: pk
- plan_regulations:
- - regulation_code: rakennusala
- additional_information:
- - type: osaAlue
- - type: kayttotarkoituskohdistus
- value: opetusrakennustenAlue
-
- - name: Rakennusala, jolle saa sijoittaa myymälän
- geometry: Alue
- short_name: m
- plan_regulations:
- - regulation_code: rakennusala
- additional_information:
- - type: osaAlue
- - type: kayttotarkoituskohdistus
- value: myymalarakennustenAlue
-
- # p. 12
- - name: Rakennusala, jolle saa sijoittaa maatilan talouskeskuksen
- geometry: Alue
- short_name: am
- plan_regulations:
- - regulation_code: rakennusala
- additional_information:
- - type: osaAlue
- - type: kayttotarkoituskohdistus
- value: maatilanTalouskeskuksenAlue
-
- - name: Rakennusala, jolle saa sijoittaa talousrakennuksen
- geometry: Alue
- short_name: t
- plan_regulations:
- - regulation_code: rakennusalaJolleSaaSijoittaaTalousrakennuksen
- additional_information:
- - type: osaAlue
-
- - name: Rakennusala, jolle saa sijoittaa saunan
- geometry: Alue
- short_name: sa
- plan_regulations:
- - regulation_code: rakennusalaJolleSaaSijoittaaSaunan
- additional_information:
- - type: osaAlue
-
- - name: Kaupunki- tai kyläkuvallisesti tärkeä alue tai alueen osa
- geometry: Alue
- short_name: sk
- plan_regulations:
- - regulation_code: kaupunkiTaiKylakuvallisestiArvokasAlue
- additional_information:
- - type: osaAlue
-
- - name: Rakennetun kulttuuriympäristön ja maiseman vaalimisen kannalta tärkeä alue muinaisjäännös
- geometry: Alue
- short_name: kyma
- plan_regulations:
- - regulation_code: maisemallisestiArvokasAlue
- additional_information:
- - type: osaAlue
- - regulation_code: merkittavaRakennettuKulttuuriymparisto
- additional_information:
- - type: osaAlue
-
- - name: Maisemallisesti arvokas alue
- geometry: Alue
- short_name: ma
- plan_regulations:
- - regulation_code: maisemallisestiArvokasAlue
- additional_information:
- - type: osaAlue
-
- - name: Kansainvälisesti arvokas maisema-alue
- geometry: Alue
- short_name: kvma
- plan_regulations:
- - regulation_code: maisemallisestiArvokasAlue
- additional_information:
- - type: osaAlue
- - type: kansainvalinen
-
- - name: Valtakunnallisesti arvokas maisema-alue
- geometry: Alue
- short_name: vama
- plan_regulations:
- - regulation_code: valtakunnallisestiArvokasMaisemaAlue
- additional_information:
- - type: osaAlue
- - type: valtakunnallinen
-
- - name: Maakunnallisesti arvokas maisema-alue
- geometry: Alue
- short_name: mma
- plan_regulations:
- - regulation_code: maisemallisestiArvokasAlue
- additional_information:
- - type: osaAlue
- - type: maakunnallinen
-
- - name: Paikallisesti arvokas maisema-alue
- geometry: Alue
- short_name: pma
- plan_regulations:
- - regulation_code: maisemallisestiArvokasAlue
- additional_information:
- - type: osaAlue
- - type: paikallinen
-
- - name: Merkittävä rakennettu kulttuuriympäristö
- geometry: Alue
- short_name: ky
- plan_regulations:
- - regulation_code: merkittavaRakennettuKulttuuriymparisto
- additional_information:
- - type: osaAlue
-
- - name: Kansainvälisesti merkittävä rakennettu kulttuuriympäristö
- geometry: Alue
- short_name: kvky
- plan_regulations:
- - regulation_code: merkittavaRakennettuKulttuuriymparisto
- additional_information:
- - type: osaAlue
- - type: kansainvalinen
-
- - name: Valtakunnallisesti merkittävä rakennettu kulttuuriympäristö
- geometry: Alue
- short_name: rky
- plan_regulations:
- - regulation_code: valtakunnallisestiMerkittavaRakennettuKulttuuriymparisto
- additional_information:
- - type: osaAlue
- - type: valtakunnallinen
-
- - name: Maakunnallisesti merkittävä rakennettu kulttuuriympäristö
- geometry: Alue
- short_name: mky
- plan_regulations:
- - regulation_code: merkittavaRakennettuKulttuuriymparisto
- additional_information:
- - type: osaAlue
- - type: maakunnallinen
-
- - name: Paikallisesti merkittävä rakennettu kulttuuriympäristö
- geometry: Alue
- short_name: pky
- plan_regulations:
- - regulation_code: merkittavaRakennettuKulttuuriymparisto
- additional_information:
- - type: osaAlue
- - type: paikallinen
-
- - name: Muu arkeologinen kohde, joka ei ole muinaismuistolain nojalla rauhoitettu kiinteä
- geometry: Alue
- short_name: ark
- plan_regulations:
- - regulation_code: muuArkeologinenKohde
- additional_information:
- - type: osaAlue
-
- - name: Valtakunnallisesti merkittävä arkeologinen kohde
- short_name: vark
- plan_regulations:
- - regulation_code: valtakunnallisestiMerkittavaArkeologinenKohde
- additional_information:
- - type: osaAlue
- - type: valtakunnallinen
-
- # p. 13
- - name: Arvokas harjualue tai muu geologinen muodostuma
- geometry: Alue
- short_name: ge
- plan_regulations:
- - regulation_code: arvokasGeologinenMuodostuma
- additional_information:
- - type: osaAlue
-
- - name: Tärkeä veden hankintaan soveltuva pohjavesialue
- geometry: Alue
- short_name: pv
- plan_regulations:
- - regulation_code: pohjavesialue
- additional_information:
- - type: osaAlue
-
- - name: Natura 2000 -verkostoon kuuluva alue
- geometry: Alue
- short_name: nat
- plan_regulations:
- - regulation_code: natura2000VerkostonAlue
- additional_information:
- - type: osaAlue
-
- - name: Luonnon monimuotoisuuden kannalta erityisen tärkeä alue
- geometry: Alue
- short_name: luo
- plan_regulations:
- - regulation_code: luonnonMonimuotoisuudenKannaltaErityisenTarkeaAlue
- additional_information:
- - type: osaAlue
-
- - name: UNESCO:n maailmanperintökohde
- geometry: Alue
- short_name: un
- plan_regulations:
- - regulation_code: unesconMaailmanperintokohde
- additional_information:
- - type: osaAlue
-
- - name: Kansallinen kaupunkipuisto
- geometry: Alue
- short_name: kp
- plan_regulations:
- - regulation_code: kansallinenKaupunkipuisto
- additional_information:
- - type: osaAlue
-
- - name: Kehittämisalue
- geometry: Alue
- short_name: ke
- plan_regulations:
- - regulation_code: kehittamisalue
- additional_information:
- - type: osaAlue
-
- - name: Alue, jolle määrätään asemakaavassa määräaikainen kielto rakennuksen rakentamiseksi
- geometry: Alue
- short_name: mrk
- plan_regulations:
- - regulation_code: maaraAikainenKieltoRakennuksenRakentamiseksi
- additional_information:
- - type: osaAlue
-
- - name: Tuulivoimaloiden alue
- geometry: Alue
- short_name: tv
- plan_regulations:
- - regulation_code: tuulivoimalaAlue
- additional_information:
- - type: osaAlue
-
- - name: Aurinkovoimaloiden alue
- geometry: Alue
- short_name: aur
- plan_regulations:
- - regulation_code: aurinkovoimalaAlue
- additional_information:
- - type: osaAlue
-
- - name: Ympäristöhäiriöalue
- geometry: Alue
- short_name: häiriö
- plan_regulations:
- - regulation_code: ymparistohairioalue
- additional_information:
- - type: osaAlue
-
- - name: Melualue
- geometry: Alue
- short_name: melu
- plan_regulations:
- - regulation_code: melualue
- additional_information:
- - type: osaAlue
-
- - name: Tärinäalue
- geometry: Alue
- short_name: tärinä
- plan_regulations:
- - regulation_code: tarinaAlue
- additional_information:
- - type: osaAlue
-
- - name: Radonriskialue
- geometry: Alue
- short_name: radon
- plan_regulations:
- - regulation_code: radonriskialue
- additional_information:
- - type: osaAlue
-
- - name: Pilaantunut maa-alue
- geometry: Alue
- short_name: pima
- plan_regulations:
- - regulation_code: pilaantunutMaaAlue
- additional_information:
- - type: osaAlue
-
- - name: Vaara-alue
- geometry: Alue
- short_name: vaara
- plan_regulations:
- - regulation_code: vaaraAlue
- additional_information:
- - type: osaAlue
-
- - name: Tulvariskialue
- geometry: Alue
- short_name: tulva
- plan_regulations:
- - regulation_code: tulvariskialue
- additional_information:
- - type: osaAlue
-
- - name: Suojavyöhyke
- geometry: Alue
- short_name: suojav
- plan_regulations:
- - regulation_code: suojavyohyke
- additional_information:
- - type: osaAlue
-
- - name: Konsultointivyöhyke
- geometry: Alue
- short_name: konsu
- plan_regulations:
- - regulation_code: konsultointivyohyke
- additional_information:
- - type: osaAlue
-
- - name: Suojeltava alueen osa
- geometry: Alue
- short_name: s
- plan_regulations:
- - regulation_code: suojelualue
- additional_information:
- - type: osaAlue
-
- # p. 14
- - name: Alueen osa, jolla sijaitsee luonnonsuojelulain mukainen luonnonsuojelualue tai -kohde
- geometry: Alue
- short_name: sl
- plan_regulations:
- - regulation_code: luonnonsuojelualue
- additional_information:
- - type: osaAlue
-
- - name: Suojeltu rakennus, jota ei saa purkaa
- geometry: Alue
- short_name: sr
- plan_regulations:
- - regulation_code: rakennussuojelualue
- additional_information:
- - type: osaAlue
-
- - name: Kansainvälisesti merkittävä suojeltu rakennus, jota ei saa purkaa
- geometry: Alue
- short_name: kvSR
- plan_regulations:
- - regulation_code: rakennussuojelualue
- additional_information:
- - type: osaAlue
- - type: kansainvalinen
-
- - name: Valtakunnallisesti merkittävä suojeltu rakennus, jota ei saa purkaa
- geometry: Alue
- short_name: vaSR
- plan_regulations:
- - regulation_code: rakennussuojelualue
- additional_information:
- - type: osaAlue
- - type: valtakunnallinen
-
- - name: Maakunnallisesti merkittävä suojeltu rakennus, jota ei saa purkaa
- geometry: Alue
- short_name: mSR
- plan_regulations:
- - regulation_code: rakennussuojelualue
- additional_information:
- - type: osaAlue
- - type: maakunnallinen
-
- - name: Paikallisesti merkittävä suojeltu rakennus, jota ei saa purkaa
- geometry: Alue
- short_name: pSR
- plan_regulations:
- - regulation_code: rakennussuojelualue
- additional_information:
- - type: osaAlue
- - type: paikallinen
-
- - name: Rakennusperinnön suojelemisesta annetun lain nojalla suojeltu rakennus, jota ei saa purkaa
- geometry: Alue
- short_name: srs
- plan_regulations:
- - regulation_code: rakennusperinnonSuojelemisestaAnnetunLainNojallaSuojeltuRakennus
- additional_information:
- - type: osaAlue
-
- - name: Alueen osa, jolla sijaitsee muinaismuistolailla rauhoitettu kiinteä muinaisjäännös
- geometry: Alue
- short_name: sm
- plan_regulations:
- - regulation_code: muinaismuistoAlue
- additional_information:
- - type: osaAlue
-
- - name: Valtion omistamien rakennusten suojelusta annetun asetuksen nojalla suojeltu rakennus, jota ei saa purkaa
- geometry: Alue
- short_name: sra
- plan_regulations:
- - regulation_code: valtionOmistamienRakennustenSuojelustaAnnetunAsetuksenNojallaSuojeltuRakennus
- additional_information:
- - type: osaAlue
-
- - name: Kirkkolain nojalla suojeltu kirkollinen rakennus
- geometry: Alue
- short_name: srk
- plan_regulations:
- - regulation_code: suojeltuKirkollinenRakennus
- additional_information:
- - type: osaAlue
-
- - name: Ortodoksisesta kirkosta annetun lain nojalla suojeltu kirkko tai rukoushuone
- geometry: Alue
- short_name: srko
- plan_regulations:
- - regulation_code: suojeltuOrtodoksinenKirkkoTaiRukoushuone
- additional_information:
- - type: osaAlue
-
- - name: Ekologisen kompensaation alue
- geometry: Alue
- short_name: ekok
- plan_regulations:
- - regulation_code: ekologisenKompensaationAlue
- additional_information:
- - type: osaAlue
-
- - name: Hulevesien hallintaan tarkoitettu alue
- geometry: Alue
- short_name: hule
- plan_regulations:
- - regulation_code: hulevesienHallintaAlue
- additional_information:
- - type: osaAlue
-
- - name: Maa-ainesten vastaanotto- tai läjitysalue
- geometry: Alue
- short_name: läji
- plan_regulations:
- - regulation_code: maaAinestenVastaanottoTaiLajitysAlue
- additional_information:
- - type: osaAlue
-
- - name: Maanalainen tila
- geometry: Alue
- short_name: maa
- plan_regulations:
- - regulation_code: rakennusala
- additional_information:
- - type: osaAlue
- - type: maanalainenTila
-
- - name: Maanalainen pysäköintilaitos
- geometry: Alue
- short_name: maaLP
- plan_regulations:
- - regulation_code: pysakointilaitostenAlue
- additional_information:
- - type: osaAlue
- - type: maanalainenTila
-
- # p. 15
- - name: Maanalainen yleinen pysäköintilaitos
- geometry: Alue
- short_name: maaLPY
- plan_regulations:
- - regulation_code: pysakointilaitostenAlue
- additional_information:
- - type: osaAlue
- - type: maanalainenTila
- - type: varattuYleiseenKayttoon
-
- - name: Liikennetunneli
- geometry: Alue
- short_name: lt
- plan_regulations:
- - regulation_code: liikennetunneli
- additional_information:
- - type: osaAlue
-
- - name: Maanalainen liikennetunneli
- geometry: Alue
- short_name: maalt
- plan_regulations:
- - regulation_code: liikennetunneli
- additional_information:
- - type: osaAlue
- - type: maanalainenTila
-
- - name: Alue, jolle saa sijoittaa polttoaineen jakeluaseman
- geometry: Alue
- short_name: pj
- plan_regulations:
- - regulation_code: uloke
- additional_information:
- - type: osaAlue
-
- - name: Uloke
- geometry: Alue
- short_name: u
- plan_regulations:
- - regulation_code: polttoaineenJakeluasema
- additional_information:
- - type: osaAlue
-
- - name: Rakennukseen jätettävä kulkuaukko
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: rakennukseenJatettavaKulkuaukko
- additional_information:
- - type: osaAlue
-
- - name: Valokatteinen tila
- geometry: Alue
- short_name: vk
- plan_regulations:
- - regulation_code: valokatteinenTila
- additional_information:
- - type: osaAlue
-
- - name: Leikki- ja oleskelualueeksi varattu alueen osa
- geometry: Alue
- short_name: le
- plan_regulations:
- - regulation_code: leikkiJaOleskelualue
- additional_information:
- - type: osaAlue
-
- - name: Istutettava alueen osa
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: istutettavaAlue
- additional_information:
- - type: osaAlue
-
- - name: Ajoyhteys
- geometry: Alue
- short_name: ajo
- plan_regulations:
- - regulation_code: ajoyhteys
- additional_information:
- - type: osaAlue
-
- - name: Eritasoristeys
- geometry: Alue
- short_name: eri
- plan_regulations:
- - regulation_code: eritasoristeys
- additional_information:
- - type: osaAlue
-
- - name: Alueen sisäiselle huoltoliikenteelle varattu alueen osa
- geometry: Alue
- short_name: h
- plan_regulations:
- - regulation_code: huoltoajoalue
- additional_information:
- - type: osaAlue
- - type: varattuAlueenSisaiseenKayttoon
-
- - name: Alueen sisäiselle jalankululle varattu alueen osa
- geometry: Alue
- short_name: jk
- plan_regulations:
- - regulation_code: jalankulkualue
- additional_information:
- - type: osaAlue
- - type: varattuAlueenSisaiseenKayttoon
-
- - name: Yleiselle jalankululle varattu alueen osa
- geometry: Alue
- short_name: jk
- plan_regulations:
- - regulation_code: jalankulkualue
- additional_information:
- - type: osaAlue
- - type: varattuYleiseenKayttoon
-
- - name: Yleiselle pyöräilylle varattu alueen osa
- geometry: Alue
- short_name: pp
- plan_regulations:
- - regulation_code: pyorailyalue
- additional_information:
- - type: osaAlue
- - type: varattuYleiseenKayttoon
-
- - name: Yleiselle jalankululle ja pyöräilylle varattu alueen osa
- geometry: Alue
- short_name: jk/pp
- plan_regulations:
- - regulation_code: jalankulkualue
- additional_information:
- - type: osaAlue
- - type: varattuYleiseenKayttoon
- - regulation_code: pyorailyalue
- additional_information:
- - type: osaAlue
- - type: varattuYleiseenKayttoon
-
- # p. 16
- - name: Maantien suoja-alueeksi varattu alueen osa
- geometry: Alue
- short_name: mtsu
- plan_regulations:
- - regulation_code: maantienSuojaAlue
- additional_information:
- - type: osaAlue
-
- - name: Maantien näkemäalueeksi varattu alueen osa
- geometry: Alue
- short_name: mtnä
- plan_regulations:
- - regulation_code: maantienNakemaAlue
- additional_information:
- - type: osaAlue
-
- - name: Rautatien suoja-alueeksi varattu alueen osa
- geometry: Alue
- short_name: rtsu
- plan_regulations:
- - regulation_code: rautatienSuojaAlue
- additional_information:
- - type: osaAlue
-
- - name: Rautatien näkemäalueeksi varattu alueen osa
- geometry: Alue
- short_name: rtnä
- plan_regulations:
- - regulation_code: rautatienNakemaAlue
- additional_information:
- - type: osaAlue
-
- - name: Alikulku
- geometry: Alue
- short_name: ali
- plan_regulations:
- - regulation_code: alikulku
- additional_information:
- - type: osaAlue
-
- - name: Ylikulku
- geometry: Alue
- short_name: yli
- plan_regulations:
- - regulation_code: ylikulku
- additional_information:
- - type: osaAlue
-
- - name: Alueen osa, jolla sijaitsee tai jolle on rakennettava melueste
- geometry: Alue
- short_name: mee
- plan_regulations:
- - regulation_code: melueste
- additional_information:
- - type: osaAlue
-
- - name: Pysäköimispaikka
- geometry: Alue
- short_name: p
- plan_regulations:
- - regulation_code: pysakoinninAlue
- additional_information:
- - type: osaAlue
-
- - name: Pysäkki
- geometry: Alue
- short_name: pys
- plan_regulations:
- - regulation_code: pysakki
- additional_information:
- - type: osaAlue
-
- - name: Johtoa varten varattu alueen osa
- geometry: Alue
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: JohtoPutkiTaiLinja
- additional_information:
- - type: osaAlue
-
- # p. 17
+ - name: Kunnan tai kaupunginosan raja
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: kunnanTaiKaupunginOsa
+ additional_information:
+ - type: osaAlue
+
+ - name: Korttelialue tai korttelialueen osa
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: korttelialueTaiKorttelialueenOsa # NOTE: Check p. 11 if "korttelialue"
+ additional_information:
+ - type: osaAlue
+
+ - name: Sitovan tonttijaon mukainen tontti
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: ohjeellinenRakennuspaikka
+ additional_information:
+ - type: osaAlue
+
+ - name: Ohjeellinen tontti/rakennuspaikka
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: sitovanTonttijaonMukainenTontti
+ additional_information:
+ - type: osaAlue
+
+ - name: Rakennusala
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: rakennusala
+ additional_information:
+ - type: osaAlue
+
+ - name: Auton säilytyspaikan rakennusala
+ geometry: Alue
+ short_name: a
+ plan_regulations:
+ - regulation_code: rakennusala
+ additional_information:
+ - type: osaAlue
+ - type: kayttotarkoituskohdistus
+ code_value: pysakoinninAlue
+
+ - name: Rakennusala, jolle saa sijoittaa lasten päiväkodin
+ geometry: Alue
+ short_name: pk
+ plan_regulations:
+ - regulation_code: rakennusala
+ additional_information:
+ - type: osaAlue
+ - type: kayttotarkoituskohdistus
+ code_value: opetusrakennustenAlue
+
+ - name: Rakennusala, jolle saa sijoittaa myymälän
+ geometry: Alue
+ short_name: m
+ plan_regulations:
+ - regulation_code: rakennusala
+ additional_information:
+ - type: osaAlue
+ - type: kayttotarkoituskohdistus
+ code_value: myymalarakennustenAlue
+
+ # p. 12
+ - name: Rakennusala, jolle saa sijoittaa maatilan talouskeskuksen
+ geometry: Alue
+ short_name: am
+ plan_regulations:
+ - regulation_code: rakennusala
+ additional_information:
+ - type: osaAlue
+ - type: kayttotarkoituskohdistus
+ code_value: maatilanTalouskeskuksenAlue
+
+ - name: Rakennusala, jolle saa sijoittaa talousrakennuksen
+ geometry: Alue
+ short_name: t
+ plan_regulations:
+ - regulation_code: rakennusalaJolleSaaSijoittaaTalousrakennuksen
+ additional_information:
+ - type: osaAlue
+
+ - name: Rakennusala, jolle saa sijoittaa saunan
+ geometry: Alue
+ short_name: sa
+ plan_regulations:
+ - regulation_code: rakennusalaJolleSaaSijoittaaSaunan
+ additional_information:
+ - type: osaAlue
+
+ - name: Kaupunki- tai kyläkuvallisesti tärkeä alue tai alueen osa
+ geometry: Alue
+ short_name: sk
+ plan_regulations:
+ - regulation_code: kaupunkiTaiKylakuvallisestiArvokasAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Rakennetun kulttuuriympäristön ja maiseman vaalimisen kannalta tärkeä alue muinaisjäännös
+ geometry: Alue
+ short_name: kyma
+ plan_regulations:
+ - regulation_code: maisemallisestiArvokasAlue
+ additional_information:
+ - type: osaAlue
+ - regulation_code: merkittavaRakennettuKulttuuriymparisto
+ additional_information:
+ - type: osaAlue
+
+ - name: Maisemallisesti arvokas alue
+ geometry: Alue
+ short_name: ma
+ plan_regulations:
+ - regulation_code: maisemallisestiArvokasAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Kansainvälisesti arvokas maisema-alue
+ geometry: Alue
+ short_name: kvma
+ plan_regulations:
+ - regulation_code: maisemallisestiArvokasAlue
+ additional_information:
+ - type: osaAlue
+ - type: kansainvalinen
+
+ - name: Valtakunnallisesti arvokas maisema-alue
+ geometry: Alue
+ short_name: vama
+ plan_regulations:
+ - regulation_code: valtakunnallisestiArvokasMaisemaAlue
+ additional_information:
+ - type: osaAlue
+ - type: valtakunnallinen
+
+ - name: Maakunnallisesti arvokas maisema-alue
+ geometry: Alue
+ short_name: mma
+ plan_regulations:
+ - regulation_code: maisemallisestiArvokasAlue
+ additional_information:
+ - type: osaAlue
+ - type: maakunnallinen
+
+ - name: Paikallisesti arvokas maisema-alue
+ geometry: Alue
+ short_name: pma
+ plan_regulations:
+ - regulation_code: maisemallisestiArvokasAlue
+ additional_information:
+ - type: osaAlue
+ - type: paikallinen
+
+ - name: Merkittävä rakennettu kulttuuriympäristö
+ geometry: Alue
+ short_name: ky
+ plan_regulations:
+ - regulation_code: merkittavaRakennettuKulttuuriymparisto
+ additional_information:
+ - type: osaAlue
+
+ - name: Kansainvälisesti merkittävä rakennettu kulttuuriympäristö
+ geometry: Alue
+ short_name: kvky
+ plan_regulations:
+ - regulation_code: merkittavaRakennettuKulttuuriymparisto
+ additional_information:
+ - type: osaAlue
+ - type: kansainvalinen
+
+ - name: Valtakunnallisesti merkittävä rakennettu kulttuuriympäristö
+ geometry: Alue
+ short_name: rky
+ plan_regulations:
+ - regulation_code: valtakunnallisestiMerkittavaRakennettuKulttuuriymparisto
+ additional_information:
+ - type: osaAlue
+ - type: valtakunnallinen
+
+ - name: Maakunnallisesti merkittävä rakennettu kulttuuriympäristö
+ geometry: Alue
+ short_name: mky
+ plan_regulations:
+ - regulation_code: merkittavaRakennettuKulttuuriymparisto
+ additional_information:
+ - type: osaAlue
+ - type: maakunnallinen
+
+ - name: Paikallisesti merkittävä rakennettu kulttuuriympäristö
+ geometry: Alue
+ short_name: pky
+ plan_regulations:
+ - regulation_code: merkittavaRakennettuKulttuuriymparisto
+ additional_information:
+ - type: osaAlue
+ - type: paikallinen
+
+ - name: Muu arkeologinen kohde, joka ei ole muinaismuistolain nojalla rauhoitettu kiinteä
+ geometry: Alue
+ short_name: ark
+ plan_regulations:
+ - regulation_code: muuArkeologinenKohde
+ additional_information:
+ - type: osaAlue
+
+ - name: Valtakunnallisesti merkittävä arkeologinen kohde
+ short_name: vark
+ plan_regulations:
+ - regulation_code: valtakunnallisestiMerkittavaArkeologinenKohde
+ additional_information:
+ - type: osaAlue
+ - type: valtakunnallinen
+
+ # p. 13
+ - name: Arvokas harjualue tai muu geologinen muodostuma
+ geometry: Alue
+ short_name: ge
+ plan_regulations:
+ - regulation_code: arvokasGeologinenMuodostuma
+ additional_information:
+ - type: osaAlue
+
+ - name: Tärkeä veden hankintaan soveltuva pohjavesialue
+ geometry: Alue
+ short_name: pv
+ plan_regulations:
+ - regulation_code: pohjavesialue
+ additional_information:
+ - type: osaAlue
+
+ - name: Natura 2000 -verkostoon kuuluva alue
+ geometry: Alue
+ short_name: nat
+ plan_regulations:
+ - regulation_code: natura2000VerkostonAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Luonnon monimuotoisuuden kannalta erityisen tärkeä alue
+ geometry: Alue
+ short_name: luo
+ plan_regulations:
+ - regulation_code: luonnonMonimuotoisuudenKannaltaErityisenTarkeaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: UNESCO:n maailmanperintökohde
+ geometry: Alue
+ short_name: un
+ plan_regulations:
+ - regulation_code: unesconMaailmanperintokohde
+ additional_information:
+ - type: osaAlue
+
+ - name: Kansallinen kaupunkipuisto
+ geometry: Alue
+ short_name: kp
+ plan_regulations:
+ - regulation_code: kansallinenKaupunkipuisto
+ additional_information:
+ - type: osaAlue
+
+ - name: Kehittämisalue
+ geometry: Alue
+ short_name: ke
+ plan_regulations:
+ - regulation_code: kehittamisalue
+ additional_information:
+ - type: osaAlue
+
+ - name: Alue, jolle määrätään asemakaavassa määräaikainen kielto rakennuksen rakentamiseksi
+ geometry: Alue
+ short_name: mrk
+ plan_regulations:
+ - regulation_code: maaraAikainenKieltoRakennuksenRakentamiseksi
+ additional_information:
+ - type: osaAlue
+
+ - name: Tuulivoimaloiden alue
+ geometry: Alue
+ short_name: tv
+ plan_regulations:
+ - regulation_code: tuulivoimalaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Aurinkovoimaloiden alue
+ geometry: Alue
+ short_name: aur
+ plan_regulations:
+ - regulation_code: aurinkovoimalaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Ympäristöhäiriöalue
+ geometry: Alue
+ short_name: häiriö
+ plan_regulations:
+ - regulation_code: ymparistohairioalue
+ additional_information:
+ - type: osaAlue
+
+ - name: Melualue
+ geometry: Alue
+ short_name: melu
+ plan_regulations:
+ - regulation_code: melualue
+ additional_information:
+ - type: osaAlue
+
+ - name: Tärinäalue
+ geometry: Alue
+ short_name: tärinä
+ plan_regulations:
+ - regulation_code: tarinaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Radonriskialue
+ geometry: Alue
+ short_name: radon
+ plan_regulations:
+ - regulation_code: radonriskialue
+ additional_information:
+ - type: osaAlue
+
+ - name: Pilaantunut maa-alue
+ geometry: Alue
+ short_name: pima
+ plan_regulations:
+ - regulation_code: pilaantunutMaaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Vaara-alue
+ geometry: Alue
+ short_name: vaara
+ plan_regulations:
+ - regulation_code: vaaraAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Tulvariskialue
+ geometry: Alue
+ short_name: tulva
+ plan_regulations:
+ - regulation_code: tulvariskialue
+ additional_information:
+ - type: osaAlue
+
+ - name: Suojavyöhyke
+ geometry: Alue
+ short_name: suojav
+ plan_regulations:
+ - regulation_code: suojavyohyke
+ additional_information:
+ - type: osaAlue
+
+ - name: Konsultointivyöhyke
+ geometry: Alue
+ short_name: konsu
+ plan_regulations:
+ - regulation_code: konsultointivyohyke
+ additional_information:
+ - type: osaAlue
+
+ - name: Suojeltava alueen osa
+ geometry: Alue
+ short_name: s
+ plan_regulations:
+ - regulation_code: suojelualue
+ additional_information:
+ - type: osaAlue
+
+ # p. 14
+ - name: Alueen osa, jolla sijaitsee luonnonsuojelulain mukainen luonnonsuojelualue tai -kohde
+ geometry: Alue
+ short_name: sl
+ plan_regulations:
+ - regulation_code: luonnonsuojelualue
+ additional_information:
+ - type: osaAlue
+
+ - name: Suojeltu rakennus, jota ei saa purkaa
+ geometry: Alue
+ short_name: sr
+ plan_regulations:
+ - regulation_code: rakennussuojelualue
+ additional_information:
+ - type: osaAlue
+
+ - name: Kansainvälisesti merkittävä suojeltu rakennus, jota ei saa purkaa
+ geometry: Alue
+ short_name: kvSR
+ plan_regulations:
+ - regulation_code: rakennussuojelualue
+ additional_information:
+ - type: osaAlue
+ - type: kansainvalinen
+
+ - name: Valtakunnallisesti merkittävä suojeltu rakennus, jota ei saa purkaa
+ geometry: Alue
+ short_name: vaSR
+ plan_regulations:
+ - regulation_code: rakennussuojelualue
+ additional_information:
+ - type: osaAlue
+ - type: valtakunnallinen
+
+ - name: Maakunnallisesti merkittävä suojeltu rakennus, jota ei saa purkaa
+ geometry: Alue
+ short_name: mSR
+ plan_regulations:
+ - regulation_code: rakennussuojelualue
+ additional_information:
+ - type: osaAlue
+ - type: maakunnallinen
+
+ - name: Paikallisesti merkittävä suojeltu rakennus, jota ei saa purkaa
+ geometry: Alue
+ short_name: pSR
+ plan_regulations:
+ - regulation_code: rakennussuojelualue
+ additional_information:
+ - type: osaAlue
+ - type: paikallinen
+
+ - name: Rakennusperinnön suojelemisesta annetun lain nojalla suojeltu rakennus, jota ei saa purkaa
+ geometry: Alue
+ short_name: srs
+ plan_regulations:
+ - regulation_code: rakennusperinnonSuojelemisestaAnnetunLainNojallaSuojeltuRakennus
+ additional_information:
+ - type: osaAlue
+
+ - name: Alueen osa, jolla sijaitsee muinaismuistolailla rauhoitettu kiinteä muinaisjäännös
+ geometry: Alue
+ short_name: sm
+ plan_regulations:
+ - regulation_code: muinaismuistoAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Valtion omistamien rakennusten suojelusta annetun asetuksen nojalla suojeltu rakennus, jota ei saa purkaa
+ geometry: Alue
+ short_name: sra
+ plan_regulations:
+ - regulation_code: valtionOmistamienRakennustenSuojelustaAnnetunAsetuksenNojallaSuojeltuRakennus
+ additional_information:
+ - type: osaAlue
+
+ - name: Kirkkolain nojalla suojeltu kirkollinen rakennus
+ geometry: Alue
+ short_name: srk
+ plan_regulations:
+ - regulation_code: suojeltuKirkollinenRakennus
+ additional_information:
+ - type: osaAlue
+
+ - name: Ortodoksisesta kirkosta annetun lain nojalla suojeltu kirkko tai rukoushuone
+ geometry: Alue
+ short_name: srko
+ plan_regulations:
+ - regulation_code: suojeltuOrtodoksinenKirkkoTaiRukoushuone
+ additional_information:
+ - type: osaAlue
+
+ - name: Ekologisen kompensaation alue
+ geometry: Alue
+ short_name: ekok
+ plan_regulations:
+ - regulation_code: ekologisenKompensaationAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Hulevesien hallintaan tarkoitettu alue
+ geometry: Alue
+ short_name: hule
+ plan_regulations:
+ - regulation_code: hulevesienHallintaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Maa-ainesten vastaanotto- tai läjitysalue
+ geometry: Alue
+ short_name: läji
+ plan_regulations:
+ - regulation_code: maaAinestenVastaanottoTaiLajitysAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Maanalainen tila
+ geometry: Alue
+ short_name: maa
+ plan_regulations:
+ - regulation_code: rakennusala
+ additional_information:
+ - type: osaAlue
+ - type: maanalainenTila
+
+ - name: Maanalainen pysäköintilaitos
+ geometry: Alue
+ short_name: maaLP
+ plan_regulations:
+ - regulation_code: pysakointilaitostenAlue
+ additional_information:
+ - type: osaAlue
+ - type: maanalainenTila
+
+ # p. 15
+ - name: Maanalainen yleinen pysäköintilaitos
+ geometry: Alue
+ short_name: maaLPY
+ plan_regulations:
+ - regulation_code: pysakointilaitostenAlue
+ additional_information:
+ - type: osaAlue
+ - type: maanalainenTila
+ - type: varattuYleiseenKayttoon
+
+ - name: Liikennetunneli
+ geometry: Alue
+ short_name: lt
+ plan_regulations:
+ - regulation_code: liikennetunneli
+ additional_information:
+ - type: osaAlue
+
+ - name: Maanalainen liikennetunneli
+ geometry: Alue
+ short_name: maalt
+ plan_regulations:
+ - regulation_code: liikennetunneli
+ additional_information:
+ - type: osaAlue
+ - type: maanalainenTila
+
+ - name: Alue, jolle saa sijoittaa polttoaineen jakeluaseman
+ geometry: Alue
+ short_name: pj
+ plan_regulations:
+ - regulation_code: uloke
+ additional_information:
+ - type: osaAlue
+
+ - name: Uloke
+ geometry: Alue
+ short_name: u
+ plan_regulations:
+ - regulation_code: polttoaineenJakeluasema
+ additional_information:
+ - type: osaAlue
+
+ - name: Rakennukseen jätettävä kulkuaukko
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: rakennukseenJatettavaKulkuaukko
+ additional_information:
+ - type: osaAlue
+
+ - name: Valokatteinen tila
+ geometry: Alue
+ short_name: vk
+ plan_regulations:
+ - regulation_code: valokatteinenTila
+ additional_information:
+ - type: osaAlue
+
+ - name: Leikki- ja oleskelualueeksi varattu alueen osa
+ geometry: Alue
+ short_name: le
+ plan_regulations:
+ - regulation_code: leikkiJaOleskelualue
+ additional_information:
+ - type: osaAlue
+
+ - name: Istutettava alueen osa
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: istutettavaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Ajoyhteys
+ geometry: Alue
+ short_name: ajo
+ plan_regulations:
+ - regulation_code: ajoyhteys
+ additional_information:
+ - type: osaAlue
+
+ - name: Eritasoristeys
+ geometry: Alue
+ short_name: eri
+ plan_regulations:
+ - regulation_code: eritasoristeys
+ additional_information:
+ - type: osaAlue
+
+ - name: Alueen sisäiselle huoltoliikenteelle varattu alueen osa
+ geometry: Alue
+ short_name: h
+ plan_regulations:
+ - regulation_code: huoltoajoalue
+ additional_information:
+ - type: osaAlue
+ - type: varattuAlueenSisaiseenKayttoon
+
+ - name: Alueen sisäiselle jalankululle varattu alueen osa
+ geometry: Alue
+ short_name: jk
+ plan_regulations:
+ - regulation_code: jalankulkualue
+ additional_information:
+ - type: osaAlue
+ - type: varattuAlueenSisaiseenKayttoon
+
+ - name: Yleiselle jalankululle varattu alueen osa
+ geometry: Alue
+ short_name: jk
+ plan_regulations:
+ - regulation_code: jalankulkualue
+ additional_information:
+ - type: osaAlue
+ - type: varattuYleiseenKayttoon
+
+ - name: Yleiselle pyöräilylle varattu alueen osa
+ geometry: Alue
+ short_name: pp
+ plan_regulations:
+ - regulation_code: pyorailyalue
+ additional_information:
+ - type: osaAlue
+ - type: varattuYleiseenKayttoon
+
+ - name: Yleiselle jalankululle ja pyöräilylle varattu alueen osa
+ geometry: Alue
+ short_name: jk/pp
+ plan_regulations:
+ - regulation_code: jalankulkualue
+ additional_information:
+ - type: osaAlue
+ - type: varattuYleiseenKayttoon
+ - regulation_code: pyorailyalue
+ additional_information:
+ - type: osaAlue
+ - type: varattuYleiseenKayttoon
+
+ # p. 16
+ - name: Maantien suoja-alueeksi varattu alueen osa
+ geometry: Alue
+ short_name: mtsu
+ plan_regulations:
+ - regulation_code: maantienSuojaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Maantien näkemäalueeksi varattu alueen osa
+ geometry: Alue
+ short_name: mtnä
+ plan_regulations:
+ - regulation_code: maantienNakemaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Rautatien suoja-alueeksi varattu alueen osa
+ geometry: Alue
+ short_name: rtsu
+ plan_regulations:
+ - regulation_code: rautatienSuojaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Rautatien näkemäalueeksi varattu alueen osa
+ geometry: Alue
+ short_name: rtnä
+ plan_regulations:
+ - regulation_code: rautatienNakemaAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Alikulku
+ geometry: Alue
+ short_name: ali
+ plan_regulations:
+ - regulation_code: alikulku
+ additional_information:
+ - type: osaAlue
+
+ - name: Ylikulku
+ geometry: Alue
+ short_name: yli
+ plan_regulations:
+ - regulation_code: ylikulku
+ additional_information:
+ - type: osaAlue
+
+ - name: Alueen osa, jolla sijaitsee tai jolle on rakennettava melueste
+ geometry: Alue
+ short_name: mee
+ plan_regulations:
+ - regulation_code: melueste
+ additional_information:
+ - type: osaAlue
+
+ - name: Pysäköimispaikka
+ geometry: Alue
+ short_name: p
+ plan_regulations:
+ - regulation_code: pysakoinninAlue
+ additional_information:
+ - type: osaAlue
+
+ - name: Pysäkki
+ geometry: Alue
+ short_name: pys
+ plan_regulations:
+ - regulation_code: pysakki
+ additional_information:
+ - type: osaAlue
+
+ - name: Johtoa varten varattu alueen osa
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: JohtoPutkiTaiLinja
+ additional_information:
+ - type: osaAlue
+
+ # p. 17
- category_code: numeerisetJaTekstimuotoiset
name: Kaavamääräysryhmät, joihin liittyy jokin numeerinen tai tekstimuotoinen arvo
plan_regulation_groups:
-
- - name: Kaupungin- tai kunnanosan numero
- geometry: Alue
- plan_regulations:
- - regulation_code: kaupunginTaiKunnanosanNumero
-
- - name: Kaupungin- tai kunnanosan nimi
- geometry: Alue
- plan_regulations:
- - regulation_code: kaupunginTaiKunnanosanNimi
-
- - name: Korttelin numero
- geometry: Alue
- plan_regulations:
- - regulation_code: korttelinNumero
-
- - name: Tontin tai rakennuspaikan numero
- geometry: Alue
- plan_regulations:
- - regulation_code: tontinTaiRakennuspaikanNumero
-
- - name: Ohjeellisen tontin tai rakennuspaikan numero
- geometry: Alue
- plan_regulations:
- - regulation_code: tontinTaiRakennuspaikanNumero
-
- - name: Kadun tai tien nimi
- geometry: Alue
- plan_regulations:
- - regulation_code: kadunTaiTienNimi
-
- - name: Torin tai katuaukion nimi
- geometry: Alue
- plan_regulations:
- - regulation_code: torinTaiKatuaukionNimi
-
- - name: Puiston tai muun yleisen alueen nimi
- geometry: Alue
- plan_regulations:
- - regulation_code: puistonTaiMuunYleisenAlueenNimi
-
- - name: Rakennusoikeus kerrosalaneliömetreinä
- geometry: Alue
- plan_regulations:
- - regulation_code: sallittuKerrosala
-
- - name: Rakennusoikeus kuutiometreinä
- geometry: Alue
- plan_regulations:
- - regulation_code: sallittuRakennustilavuus
-
- - name: Rakentamisen suhde alueen pinta-alaan (%)
- geometry: Alue
- description: Luku osoittaa, kuinka suuren osan alueesta tai rakennusalasta saa käyttää rakentamiseen
- plan_regulations:
- - regulation_code: rakentamisenSuhdeAlueenPintaAlaan
-
- - name: Väljyysluku
- geometry: Alue
- description: Luku osoittaa, kuinka suuri osa alueesta tai rakennusalasta tulee jättää rakentamatta
- plan_regulations:
- - regulation_code: valjyysluku
-
- - name: Suurin sallittu maanpäällinen kerrosluku (luku)
- geometry: Alue
- descrption: Roomalainen numero osoittaa rakennusten, rakennuksen tai sen osan suurimman sallitun kerrosluvun
- plan_regulations:
- - regulation_code: maanpaallinenKerroslukuLuku
-
- # p. 18
- - name: Maanpäällinen vähimmäis- ja enimmäiskerrosluku (arvoväli)
- geometry: Alue
- description: Roomalaisin numeroin ilmaistu arvoväli osoittaa rakennusten, rakennuksen tai sen osan kerrosluvun vähimmäis- ja enimmäismäärän
- plan_regulations:
- - regulation_code: maanpaallinenKerroslukuArvovali
-
- - name: Suurin sallittu maanalainen kerrosluku (luku)
- geometry: Alue
- description: Roomalainen numero osoittaa rakennusten, rakennuksen tai sen osan suurimman maan alle sijoitettavan sallitun kerrosluvun
- plan_regulations:
- - regulation_code: maanalainenKerroslukuLuku
-
- - name: Maanalainen vähimmäis- ja enimmäiskerrosluku (arvoväli)
- geometry: Alue
- description: Roomalaisin numeroin ilmaistu arvoväli osoittaa rakennusten, rakennuksen tai sen osan kerrosluvun vähimmäis- ja enimmäismäärän
- plan_regulations:
- - regulation_code: maanalainenKerroslukuArvovali
-
- - name: Kansipihan suurin sallittu kerrosluku kansipihalta ylöspäin
- geometry: Alue
- plan_regulations:
- - regulation_code: maanpaallinenKerroslukuLuku
-
- - name: Kansipihan suurin sallittu kerrosluku kansipihalta alaspäin
- geometry: Alue
- plan_regulations:
- - regulation_code: maanpaallinenKerroslukuLuku
-
- - name: Kellarin sallittu osuus kerrosalasta
- geometry: Alue
- description: Murtoluku roomalaisen numeron edessä osoittaa, kuinka suuren osan rakennuksen suurimman kerroksen alasta saa kellarikerroksessa käyttää kerrosalaan luettavaksi tilaksi
- plan_regulations:
- - regulation_code: kellarinSallittuOsuusKerrosalasta
-
- - name: Ullakon sallittu osuus kerrosalasta
- geometry: Alue
- description: Murtoluku roomalaisen numeron jäljessä osoittaa, kuinka suuren osan rakennuksen suurimman kerroksen alasta ullakon tasolla saa käyttää kerrosalaan laskettavaksi tilaksi
- plan_regulations:
- - regulation_code: ullakonSallittuOsuusKerrosalasta
-
- - name: Tehokkuusluku
- geometry: Alue
- description: Tehokkuusluku eli kerrosalan suhde tontin/kerrosalan suhde tontin/rakennuspaikan pinta-alaan
- plan_regulations:
- - regulation_code: tehokkuusluku
-
- - name: Vihertehokkuus
- geometry: Alue
- description: Vihertehokkuus eli kasvillisuuden peittämän pinnan suhde alueen pinta-alaan
- plan_regulations:
- - regulation_code: vihertehokkuus
-
- - name: Kattokaltevuus
- geometry: Alue
- plan_regulations:
- - regulation_code: kattokaltevuus
-
- - name: Maanpinnan likimääräinen korkeusasema
- geometry: Alue
- plan_regulations:
- - regulation_code: maanpinnanKorkeusasema
-
- - name: Rakennuksen vesikaton ylimmän kohdan korkeusasema
- geometry: Alue
- plan_regulations:
- - regulation_code: vesikatonYlimmanKohdanKorkeusasema
-
- - name: Rakennuksen julkisivupinnan ja vesikaton leikkauskohdan ylin korkeusasema
- geometry: Alue
- plan_regulations:
- - regulation_code: julkisivupinnanJaVesikatonLeikkauskohdanKorkeusasema
-
- # p. 19
- - name: Rakennuksen julkisivun enimmäiskorkeus metreinä
- geometry: Alue
- plan_regulations:
- - regulation_code: julkisivunEnimmaiskorkeus
-
- - name: Rakennuksen, rakenteiden ja laitteiden ylin korkeusasema
- geometry: Alue
- plan_regulations:
- - regulation_code: rakennustenRakenteidenJaLaitteidenYlinKorkeusasema
-
- - name: Rakennuksen, rakenteiden ja laitteiden alin korkeusasema
- geometry: Alue
- plan_regulations:
- - regulation_code: rakennustenRakenteidenJaLaitteidenAlinKorkeusasema
-
- - name: Alin painovoimainen viemäröintitaso
- geometry: Alue
- plan_regulations:
- - regulation_code: alinPainovoimainenViemarointitaso
-
- - name: Kosteudelle alttiiden rakenteiden alin rakentamiskorkeus
- geometry: Alue
- plan_regulations:
- - regulation_code: kosteudelleAlttiidenRakenteidenAlinRakentamiskorkeus
-
- - name: Tuulivoimalan enimmäiskorkeus
- geometry: Alue
- description: Määräys osoittaa tuulivoimalan suurimman sallitun kokonaiskorkeuden
- plan_regulations:
- - regulation_code: tuulivoimalanEnimmaiskorkeus
-
- - name: Tuulivoimaloiden määrä
- geometry: Alue
- description: Määräys osoittaa, kuinka monta tuulivoimalaa alueelle saa rakentaa
- plan_regulations:
- - regulation_code: tuulivoimaloidenMaara
-
- - name: Asuntojen määrä
- geometry: Alue
- description: Määräys osoittaa, kuinka monta asuntoa alueelle on rakennettava
- plan_regulations:
- - regulation_code: asuntojenMaara
-
- - name: Pyöräpaikkojen määrä
- geometry: Alue
- description: Määräys osoittaa, kuinka monta pyöräpaikkaa alueelle on rakennettava
- plan_regulations:
- - regulation_code: pyorapaikkojenMaara
-
- - name: Autopaikkojen määrä
- geometry: Alue
- descrpition: ääräys osoittaa, kuinka monta autopaikkaa alueelle on rakennettava
- plan_regulations:
- - regulation_code: autopaikkojenMaara
-
- - name: Kerrosneliömäärä yhtä pyöräpaikkaa kohden
- geometry: Alue
- description: Määräys osoittaa, kuinka monta kerrosalaneliömetriä kohti on rakennettava yksi pyöräpaikka
- plan_regulations:
- - regulation_code: kerrosneliomaaraYhtaPyorapaikkaaKohden
-
- - name: Kerrosneliömäärä yhtä autopaikkaa kohden
- geometry: Alue
- description: Määräys osoittaa, kuinka monta kerrosalaneliömetriä kohti on rakennettava yksi autopaikka
- plan_regulations:
- - regulation_code: kerrosneliomaaraYhtaAutopaikkaaKohden
-
- - name: Pyöräpaikkojen määrä asuntoa kohden
- geometry: Alue
- description: Määräys osoittaa, kuinka monta pyöräpaikkaa asuntoa kohti on rakennettava
- plan_regulations:
- - regulation_code: pyorapaikkojenMaaraAsuntoaKohden
-
- - name: Autopaikkojen määrä asuntoa kohden
- geometry: Alue
- description: Määräys osoittaa, kuinka monta autopaikkaa asuntoa kohti on rakennettava
- plan_regulations:
- - regulation_code: autopaikkojenMaaraAsuntoaKohden
-
- - name: Alueelle sijoitettavien rakenteiden ääneneristavyys vähintään 00 dB
- geometry: Alue
- description: Määräys osoittaa, että alueelle sijoitettavien rakenteiden ääneneristävyyden tulee olla vähintään 00 dB
- plan_regulations:
- - regulation_code: aaneneristavyys
-
- # p. 20
+ - name: Kaupungin- tai kunnanosan numero
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: kaupunginTaiKunnanosanNumero
+
+ - name: Kaupungin- tai kunnanosan nimi
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: kaupunginTaiKunnanosanNimi
+
+ - name: Korttelin numero
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: korttelinNumero
+
+ - name: Tontin tai rakennuspaikan numero
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: tontinTaiRakennuspaikanNumero
+
+ - name: Ohjeellisen tontin tai rakennuspaikan numero
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: tontinTaiRakennuspaikanNumero
+
+ - name: Kadun tai tien nimi
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: kadunTaiTienNimi
+
+ - name: Torin tai katuaukion nimi
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: torinTaiKatuaukionNimi
+
+ - name: Puiston tai muun yleisen alueen nimi
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: puistonTaiMuunYleisenAlueenNimi
+
+ - name: Rakennusoikeus kerrosalaneliömetreinä
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: sallittuKerrosala
+
+ - name: Rakennusoikeus kuutiometreinä
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: sallittuRakennustilavuus
+
+ - name: Rakentamisen suhde alueen pinta-alaan (%)
+ geometry: Alue
+ description: Luku osoittaa, kuinka suuren osan alueesta tai rakennusalasta saa käyttää rakentamiseen
+ plan_regulations:
+ - regulation_code: rakentamisenSuhdeAlueenPintaAlaan
+
+ - name: Väljyysluku
+ geometry: Alue
+ description: Luku osoittaa, kuinka suuri osa alueesta tai rakennusalasta tulee jättää rakentamatta
+ plan_regulations:
+ - regulation_code: valjyysluku
+
+ - name: Suurin sallittu maanpäällinen kerrosluku (luku)
+ geometry: Alue
+ descrption: Roomalainen numero osoittaa rakennusten, rakennuksen tai sen osan suurimman sallitun kerrosluvun
+ plan_regulations:
+ - regulation_code: maanpaallinenKerroslukuLuku
+
+ # p. 18
+ - name: Maanpäällinen vähimmäis- ja enimmäiskerrosluku (arvoväli)
+ geometry: Alue
+ description: Roomalaisin numeroin ilmaistu arvoväli osoittaa rakennusten, rakennuksen tai sen osan kerrosluvun vähimmäis- ja enimmäismäärän
+ plan_regulations:
+ - regulation_code: maanpaallinenKerroslukuArvovali
+
+ - name: Suurin sallittu maanalainen kerrosluku (luku)
+ geometry: Alue
+ description: Roomalainen numero osoittaa rakennusten, rakennuksen tai sen osan suurimman maan alle sijoitettavan sallitun kerrosluvun
+ plan_regulations:
+ - regulation_code: maanalainenKerroslukuLuku
+
+ - name: Maanalainen vähimmäis- ja enimmäiskerrosluku (arvoväli)
+ geometry: Alue
+ description: Roomalaisin numeroin ilmaistu arvoväli osoittaa rakennusten, rakennuksen tai sen osan kerrosluvun vähimmäis- ja enimmäismäärän
+ plan_regulations:
+ - regulation_code: maanalainenKerroslukuArvovali
+
+ - name: Kansipihan suurin sallittu kerrosluku kansipihalta ylöspäin
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: maanpaallinenKerroslukuLuku
+
+ - name: Kansipihan suurin sallittu kerrosluku kansipihalta alaspäin
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: maanpaallinenKerroslukuLuku
+
+ - name: Kellarin sallittu osuus kerrosalasta
+ geometry: Alue
+ description: Murtoluku roomalaisen numeron edessä osoittaa, kuinka suuren osan rakennuksen suurimman kerroksen alasta saa kellarikerroksessa käyttää kerrosalaan luettavaksi tilaksi
+ plan_regulations:
+ - regulation_code: kellarinSallittuOsuusKerrosalasta
+
+ - name: Ullakon sallittu osuus kerrosalasta
+ geometry: Alue
+ description: Murtoluku roomalaisen numeron jäljessä osoittaa, kuinka suuren osan rakennuksen suurimman kerroksen alasta ullakon tasolla saa käyttää kerrosalaan laskettavaksi tilaksi
+ plan_regulations:
+ - regulation_code: ullakonSallittuOsuusKerrosalasta
+
+ - name: Tehokkuusluku
+ geometry: Alue
+ description: Tehokkuusluku eli kerrosalan suhde tontin/kerrosalan suhde tontin/rakennuspaikan pinta-alaan
+ plan_regulations:
+ - regulation_code: tehokkuusluku
+
+ - name: Vihertehokkuus
+ geometry: Alue
+ description: Vihertehokkuus eli kasvillisuuden peittämän pinnan suhde alueen pinta-alaan
+ plan_regulations:
+ - regulation_code: vihertehokkuus
+
+ - name: Kattokaltevuus
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: kattokaltevuus
+
+ - name: Maanpinnan likimääräinen korkeusasema
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: maanpinnanKorkeusasema
+
+ - name: Rakennuksen vesikaton ylimmän kohdan korkeusasema
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: vesikatonYlimmanKohdanKorkeusasema
+
+ - name: Rakennuksen julkisivupinnan ja vesikaton leikkauskohdan ylin korkeusasema
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: julkisivupinnanJaVesikatonLeikkauskohdanKorkeusasema
+
+ # p. 19
+ - name: Rakennuksen julkisivun enimmäiskorkeus metreinä
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: julkisivunEnimmaiskorkeus
+
+ - name: Rakennuksen, rakenteiden ja laitteiden ylin korkeusasema
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: rakennustenRakenteidenJaLaitteidenYlinKorkeusasema
+
+ - name: Rakennuksen, rakenteiden ja laitteiden alin korkeusasema
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: rakennustenRakenteidenJaLaitteidenAlinKorkeusasema
+
+ - name: Alin painovoimainen viemäröintitaso
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: alinPainovoimainenViemarointitaso
+
+ - name: Kosteudelle alttiiden rakenteiden alin rakentamiskorkeus
+ geometry: Alue
+ plan_regulations:
+ - regulation_code: kosteudelleAlttiidenRakenteidenAlinRakentamiskorkeus
+
+ - name: Tuulivoimalan enimmäiskorkeus
+ geometry: Alue
+ description: Määräys osoittaa tuulivoimalan suurimman sallitun kokonaiskorkeuden
+ plan_regulations:
+ - regulation_code: tuulivoimalanEnimmaiskorkeus
+
+ - name: Tuulivoimaloiden määrä
+ geometry: Alue
+ description: Määräys osoittaa, kuinka monta tuulivoimalaa alueelle saa rakentaa
+ plan_regulations:
+ - regulation_code: tuulivoimaloidenMaara
+
+ - name: Asuntojen määrä
+ geometry: Alue
+ description: Määräys osoittaa, kuinka monta asuntoa alueelle on rakennettava
+ plan_regulations:
+ - regulation_code: asuntojenMaara
+
+ - name: Pyöräpaikkojen määrä
+ geometry: Alue
+ description: Määräys osoittaa, kuinka monta pyöräpaikkaa alueelle on rakennettava
+ plan_regulations:
+ - regulation_code: pyorapaikkojenMaara
+
+ - name: Autopaikkojen määrä
+ geometry: Alue
+ descrpition: ääräys osoittaa, kuinka monta autopaikkaa alueelle on rakennettava
+ plan_regulations:
+ - regulation_code: autopaikkojenMaara
+
+ - name: Kerrosneliömäärä yhtä pyöräpaikkaa kohden
+ geometry: Alue
+ description: Määräys osoittaa, kuinka monta kerrosalaneliömetriä kohti on rakennettava yksi pyöräpaikka
+ plan_regulations:
+ - regulation_code: kerrosneliomaaraYhtaPyorapaikkaaKohden
+
+ - name: Kerrosneliömäärä yhtä autopaikkaa kohden
+ geometry: Alue
+ description: Määräys osoittaa, kuinka monta kerrosalaneliömetriä kohti on rakennettava yksi autopaikka
+ plan_regulations:
+ - regulation_code: kerrosneliomaaraYhtaAutopaikkaaKohden
+
+ - name: Pyöräpaikkojen määrä asuntoa kohden
+ geometry: Alue
+ description: Määräys osoittaa, kuinka monta pyöräpaikkaa asuntoa kohti on rakennettava
+ plan_regulations:
+ - regulation_code: pyorapaikkojenMaaraAsuntoaKohden
+
+ - name: Autopaikkojen määrä asuntoa kohden
+ geometry: Alue
+ description: Määräys osoittaa, kuinka monta autopaikkaa asuntoa kohti on rakennettava
+ plan_regulations:
+ - regulation_code: autopaikkojenMaaraAsuntoaKohden
+
+ - name: Alueelle sijoitettavien rakenteiden ääneneristavyys vähintään 00 dB
+ geometry: Alue
+ description: Määräys osoittaa, että alueelle sijoitettavien rakenteiden ääneneristävyyden tulee olla vähintään 00 dB
+ plan_regulations:
+ - regulation_code: aaneneristavyys
+
+ # p. 20
- category_code: rakennusalanKayttotarkoituksenOsuus
name: Rakennusalaan liittyvien käyttötarkoituksen osuutta koskevat kaavamääräysryhmät
plan_regulation_groups:
-
- - name: Rakennusalalle sallittu kerrosalan prosenttiosuus (%) asuinhuoneistoja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta kerrosalasta saadaan käyttää asuinhuoneistoja varten
- plan_regulations:
- - regulation_code: asumisenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusKerrosalastaPros
-
- - name: Rakennusalalle sallittu kerrosalan kerrosneliömetrimäärä (k-m2) asuinhuoneistoja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta kerrosneliömetriä rakennusalalle sallitusta kerrosalasta saadaan käyttää asuinhuoneistoja varten
- plan_regulations:
- - regulation_code: asumisenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusKerrosalastaK-m2
-
- - name: Rakennusalalle sallittu kerrostilavuuden prosenttiosuus (%) asuinhuoneistoja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta kerrostilavuudesta saadaan käyttää asuinhuoneistoja varten
- plan_regulations:
- - regulation_code: asumisenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusRakennustilavuudestaPros
-
- - name: Rakennusalalle sallittu kerrostilavuuden kuutiometrimäärä (k-m3) asuinhuoneistoja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta kuutiometriä rakennusalalle sallitusta kerrostilavuudesta saadaan käyttää asuinhuoneistoja varten
- plan_regulations:
- - regulation_code: asumisenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusRakennustilavuudestaK-m3
-
- - name: Rakennusalalle sallittu kerrosalan prosenttiosuus (%) myymälätiloja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta kerrosalasta saadaan käyttää myymälätiloja varten
- plan_regulations:
- - regulation_code: myymalarakennustenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusKerrosalastaPros
-
- - name: Rakennusalalle sallittu kerrosalan kerrosneliömetrimäärä (k-m2) myymälätiloja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta kerrosneliömetriä rakennusalalle sallitusta kerrosalasta saadaan käyttää myymälätiloja varten
- plan_regulations:
- - regulation_code: myymalarakennustenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusKerrosalastaK-m2
-
- - name: Rakennusalalle sallittu kerrostilavuuden prosenttiosuus (%) myymälätiloja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta rakennustilavuudesta saadaan käyttää myymälätiloja varten
- plan_regulations:
- - regulation_code: myymalarakennustenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusRakennustilavuudestaPros
-
- - name: Rakennusalalle sallittu kerrostilavuuden kuutiometrimäärä (k-m3) myymälätiloja varten
- geometry: Alue
- short_name: # NOTE: Check symbol
- description: Määräys osoittaa, kuinka monta kuutiometriä rakennusalalle sallitusta kerrostilavuudesta saadaan käyttää myymälätiloja varten
- plan_regulations:
- - regulation_code: myymalarakennustenAlue
- additional_information:
- - type: kayttotarkoituksenOsuusRakennustilavuudestaK-m3
-
- # p. 21
+ - name: Rakennusalalle sallittu kerrosalan prosenttiosuus (%) asuinhuoneistoja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta kerrosalasta saadaan käyttää asuinhuoneistoja varten
+ plan_regulations:
+ - regulation_code: asumisenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusKerrosalastaPros
+
+ - name: Rakennusalalle sallittu kerrosalan kerrosneliömetrimäärä (k-m2) asuinhuoneistoja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta kerrosneliömetriä rakennusalalle sallitusta kerrosalasta saadaan käyttää asuinhuoneistoja varten
+ plan_regulations:
+ - regulation_code: asumisenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusKerrosalastaK-m2
+
+ - name: Rakennusalalle sallittu kerrostilavuuden prosenttiosuus (%) asuinhuoneistoja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta kerrostilavuudesta saadaan käyttää asuinhuoneistoja varten
+ plan_regulations:
+ - regulation_code: asumisenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusRakennustilavuudestaPros
+
+ - name: Rakennusalalle sallittu kerrostilavuuden kuutiometrimäärä (k-m3) asuinhuoneistoja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta kuutiometriä rakennusalalle sallitusta kerrostilavuudesta saadaan käyttää asuinhuoneistoja varten
+ plan_regulations:
+ - regulation_code: asumisenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusRakennustilavuudestaK-m3
+
+ - name: Rakennusalalle sallittu kerrosalan prosenttiosuus (%) myymälätiloja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta kerrosalasta saadaan käyttää myymälätiloja varten
+ plan_regulations:
+ - regulation_code: myymalarakennustenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusKerrosalastaPros
+
+ - name: Rakennusalalle sallittu kerrosalan kerrosneliömetrimäärä (k-m2) myymälätiloja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta kerrosneliömetriä rakennusalalle sallitusta kerrosalasta saadaan käyttää myymälätiloja varten
+ plan_regulations:
+ - regulation_code: myymalarakennustenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusKerrosalastaK-m2
+
+ - name: Rakennusalalle sallittu kerrostilavuuden prosenttiosuus (%) myymälätiloja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta prosenttia rakennusalalle sallitusta rakennustilavuudesta saadaan käyttää myymälätiloja varten
+ plan_regulations:
+ - regulation_code: myymalarakennustenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusRakennustilavuudestaPros
+
+ - name: Rakennusalalle sallittu kerrostilavuuden kuutiometrimäärä (k-m3) myymälätiloja varten
+ geometry: Alue
+ short_name: # NOTE: Check symbol
+ description: Määräys osoittaa, kuinka monta kuutiometriä rakennusalalle sallitusta kerrostilavuudesta saadaan käyttää myymälätiloja varten
+ plan_regulations:
+ - regulation_code: myymalarakennustenAlue
+ additional_information:
+ - type: kayttotarkoituksenOsuusRakennustilavuudestaK-m3
+
+ # p. 21
- category_code: geometrialtaanViivamaisetJaPistemaiset
name: Viivamaisiin ja pistemäisiin kaavakohteisiin liittyvät kaavamääräysryhmät
plan_regulation_groups:
-
- - name: Maanalaisiin tiloihin johtava ajoluiska
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: ajoluiska
-
- - name: Rakennusalan sivu, jota koskee tarkempi määräys
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: rakennusalanSivuJotaKoskeeTarkempiMaarays
-
- - name: Rakennusalan sivu, johon rakennus on rakennettava kiinni
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: rakennusalanSivuJohonRakennusOnRakennettavaKiinni
-
- - name: Rakennuksen sivu, jossa suora uloskäynti porrashuoneista
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: rakennuksenSivuJossaSuoraUloskayntiPorrashuoneista
-
- - name: Rakennusalan sivu, jonka puoleiseen rakennuksen seinään ei saa sijoittaa ikkunoita
- geometry: Viiva
- short_name: ik
- plan_regulations:
- - regulation_code: ikkunatonSeina
-
- - name: Rakennuksen harjasuuntaa osoittava viiva
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: rakennuksenHarjanSuunta
-
- - name: Istutettava puurivi
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: puuTaiPuurivi
-
- - name: Istutettava puu
- geometry: Piste
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: puuTaiPuurivi
-
- - name: Säilytettävä puurivi
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: puuTaiPuurivi
- additional_information:
- - type: sailytettava
-
- - name: Säilytettävä puu
- geometry: Piste
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: puuTaiPuurivi
- additional_information:
- - type: sailytettava
-
- - name: Ulkoilureitti
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: ulkoiluTaiVirkistysReitti
-
- - name: Katualueen rajan osa, jonka kohdalta ei saa järjestää ajoneuvoliittymää
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: kadunOsaJollaOnAjoneuvoliittymakielto
-
- - name: Meluesteen tai melusuojauksen likimääräinen sijainti
- geometry: Viiva
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: melueste
-
- - name: Ajoneuvoliittymän likimääräinen sijainti
- geometry: Piste
- short_name: # NOTE: Check symbol
- plan_regulations:
- - regulation_code: liittyma
+ - name: Maanalaisiin tiloihin johtava ajoluiska
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: ajoluiska
+
+ - name: Rakennusalan sivu, jota koskee tarkempi määräys
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: rakennusalanSivuJotaKoskeeTarkempiMaarays
+
+ - name: Rakennusalan sivu, johon rakennus on rakennettava kiinni
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: rakennusalanSivuJohonRakennusOnRakennettavaKiinni
+
+ - name: Rakennuksen sivu, jossa suora uloskäynti porrashuoneista
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: rakennuksenSivuJossaSuoraUloskayntiPorrashuoneista
+
+ - name: Rakennusalan sivu, jonka puoleiseen rakennuksen seinään ei saa sijoittaa ikkunoita
+ geometry: Viiva
+ short_name: ik
+ plan_regulations:
+ - regulation_code: ikkunatonSeina
+
+ - name: Rakennuksen harjasuuntaa osoittava viiva
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: rakennuksenHarjanSuunta
+
+ - name: Istutettava puurivi
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: puuTaiPuurivi
+
+ - name: Istutettava puu
+ geometry: Piste
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: puuTaiPuurivi
+
+ - name: Säilytettävä puurivi
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: puuTaiPuurivi
+ additional_information:
+ - type: sailytettava
+
+ - name: Säilytettävä puu
+ geometry: Piste
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: puuTaiPuurivi
+ additional_information:
+ - type: sailytettava
+
+ - name: Ulkoilureitti
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: ulkoiluTaiVirkistysReitti
+
+ - name: Katualueen rajan osa, jonka kohdalta ei saa järjestää ajoneuvoliittymää
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: kadunOsaJollaOnAjoneuvoliittymakielto
+
+ - name: Meluesteen tai melusuojauksen likimääräinen sijainti
+ geometry: Viiva
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: melueste
+
+ - name: Ajoneuvoliittymän likimääräinen sijainti
+ geometry: Piste
+ short_name: # NOTE: Check symbol
+ plan_regulations:
+ - regulation_code: liittyma
diff --git a/arho_feature_template/resources/libraries/regulation_groups/katja_yleiskaava.yaml b/arho_feature_template/resources/libraries/regulation_groups/katja_yleiskaava.yaml
index 5f6fc81..8c2c494 100644
--- a/arho_feature_template/resources/libraries/regulation_groups/katja_yleiskaava.yaml
+++ b/arho_feature_template/resources/libraries/regulation_groups/katja_yleiskaava.yaml
@@ -1,18 +1,16 @@
name: Yleiskaavan kaavamääräysryhmät (Katja)
version: 1
categories:
-
- category_code: aluevaraukset
name: Aluevaraukset
plan_regulation_groups:
-
- name: Asuntoalue
geometry: [Alue, Piste]
short_name: A
plan_regulations:
- regulation_code: asumisenAlue
additional_information:
- - type: paakayttotarkoitus
+ - type: paakayttotarkoitus
- name: Kerrostalovaltainen asuntoalue
geometry: [Alue, Piste]
@@ -148,11 +146,11 @@ categories:
- regulation_code: teollisuusalue
additional_information:
- type: paakayttotarkoitus
- - type: vaarallistenKemikaalienValmistusJaVarastointiSallittu
+ - type: VaarallistenKemikaalienValmistusJaVarastointiSallittu
- regulation_code: varastoalue
additional_information:
- type: paakayttotarkoitus
- - type: vaarallistenKemikaalienValmistusJaVarastointiSallittu
+ - type: VaarallistenKemikaalienValmistusJaVarastointiSallittu
- name: Virkistysalue
geometry: [Alue, Piste]
@@ -192,7 +190,7 @@ categories:
plan_regulations:
- regulation_code: uimaranta
additional_information:
- - type: paakayttotarkoitus
+ - type: paakayttotarkoitus
- name: Vapaa-ajan asumisen ja matkailun alue
geometry: [Alue, Piste]
@@ -604,7 +602,6 @@ categories:
- category_code: ymparistonmuuutosAluevaraukset
name: Ympäristön muutosta koskevien kaavamääräysryhmien vaikutus aluevaraukseen
plan_regulation_groups:
-
- name: Olemassa oleva asuntovaltainen alue
geometry: [Alue, Piste]
short_name: A
@@ -671,7 +668,6 @@ categories:
- category_code: osa-alueet
name: Erityisominaisuudet ja muut osa-alueet
plan_regulation_groups:
-
- name: Rakennetun kulttuuriympäristön ja maiseman vaalimisen kannalta tärkeä alue
geometry: [Alue, Piste]
short_name: kyma
@@ -1239,7 +1235,6 @@ categories:
- category_code: kehittämisperiaatteet
name: Kehittämisperiaatteita koskevat kaavamääräysryhmät
plan_regulation_groups:
-
- name: Kaupunkikehittämisvyöhyke
geometry: Alue
short_name: kk
@@ -1415,7 +1410,6 @@ categories:
- category_code: viivat
name: Eri liikennemuotojen käyttöön tarkoitetut linjaukset (Viivamaisiin ja pistemäisiin kaavakohteisiin liittyvät kaavamääräysryhmät)
plan_regulation_groups:
-
- name: Nykyinen tie
geometry: Viiva
short_name: # NOTE: check symbol p. 38
@@ -1626,7 +1620,6 @@ categories:
- category_code: ymparistonmuuutosLiikennemuodot
name: Ympäristönmuutosta koskevien määräysten vaikutus yleiskaavan eri liikennemuotojen käyttöön tarkoitettujen linjausten esitystapaan
plan_regulation_groups:
-
- name: Nykyinen tie
geometry: Viiva
short_name: # NOTE: check symbol p. 41
@@ -1769,7 +1762,6 @@ categories:
- category_code: muutLinjaukset
name: Muut yleiskaavassa osoitettavia linjauksia koskevat kaavamääräysryhmät
plan_regulation_groups:
-
- name: Viheryhteys
geometry: Viiva
short_name: # NOTE: check symbol p. 42
@@ -1881,7 +1873,6 @@ categories:
- category_code: numeerisetJaTekstimuotoiset
name: Yleiskaavan kaavamääräysryhmät, joille annetaan numeerinen tai tekstimuotoinen arvo
plan_regulation_groups:
-
- name: Kaupungin- tai kunnanosan nimi
geometry: Alue
plan_regulations:
@@ -1908,7 +1899,6 @@ categories:
- category_code: rakennuspaikka
name: Rakennuspaikkaa koskevat kaavamääräysryhmät
plan_regulation_groups:
-
- name: Rakennuspaikka
geometry: Piste
short_name: # NOTE: check symbol p. 44
diff --git a/qgisprojekti.qgz b/qgisprojekti.qgz
index 05cce3f..a4b2297 100644
Binary files a/qgisprojekti.qgz and b/qgisprojekti.qgz differ