Files
kadastr11/algam.py
2025-05-27 21:37:21 +05:00

55 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
import re
from shapely.geometry import Polygon
from algam_pars_mif import UnpackingMif
class MifData:
def __init__(self,directory,name,cad_number,additional_info,square):
self.directory:str=directory
self.name:str=name
self.cad_number:str=cad_number
self.additional_info:str=additional_info
self.square:float=square
class ReadMifDirectory():
def __init__(self):
pass
def find_mif_files(self,directory:str):
mif_files = []
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith('.mif'):
# Ищем последовательность чисел, разделённых чем угодно, в начале имени файла
cad_match = re.search(r'(\d{2,}([_\W]+)?)+\d{2,}', file)
if cad_match:
# Извлекаем только цифры из найденной последовательности
numbers = re.findall(r'\d+', cad_match.group())
cad_number = ':'.join(numbers)
# Всё, что после кадастрового номера — это аббревиатуры и прочее
additional_info = file[cad_match.end():]
# Удаляем расширение
additional_info = re.sub(r'\.[^.]+$', '', additional_info)
# Чистим пробелы и спецсимволы
additional_info = re.sub(r'\s+', '_', additional_info)
additional_info = re.sub(r'^[^\wа-яА-ЯёЁ]*', '', additional_info)
additional_info = re.sub(r'[^\wа-яА-ЯёЁ_]', '', additional_info)
additional_info = re.sub(r'_+', '_', additional_info).strip('_')
else:
cad_number = ""
additional_info = re.sub(r'\.[^.]+$', '', file)
additional_info = re.sub(r'\s+', '_', additional_info)
additional_info = re.sub(r'^[^\wа-яА-ЯёЁ]*', '', additional_info)
additional_info = re.sub(r'[^\wа-яА-ЯёЁ_]', '', additional_info)
additional_info = re.sub(r'_+', '_', additional_info).strip('_')
mif_files.append(MifData(
directory=os.path.join(root, file),
name=os.path.basename(file),
cad_number=cad_number,
additional_info=additional_info,
square=UnpackingMif(file_directory=os.path.join(root, file))
))
if mif_files:
print(f"{mif_files[0].directory=}/{mif_files[0].name=}/{mif_files[0].cad_number=}/{mif_files[0].additional_info=}/{mif_files[0].square=}")
return mif_files