Географические данные¶
В этом разделе описаны встроенные паттерны для генерации географических данных.
GeoPatterns¶
Географические данные (Широта, Долгота).
latitude = r"^-?([1-8]?\d(\.\d{1,6})?|90(\.0{1,6})?)$"
longitude = r"^-?((1[0-7]\d(\.\d{1,6})?)|(\d{1,2}(\.\d{1,6})?)|180(\.0{1,6})?)$"
Пример использования¶
from fucktar.generator import BasePattern
from fucktar.config import PatternConfig
from fucktar.default_patterns.geo import GeoPatterns
class GeoDataPatterns(BasePattern[GeoData]):
latitude = GeoPatterns.latitude
longitude = GeoPatterns.longitude
pattern_config = PatternConfig(
scope="geo",
unique_fields=["latitude", "longitude"]
)
Особенности паттернов¶
Широта (latitude)¶
Паттерн генерирует значения широты в диапазоне от -90 до 90 градусов с точностью до 6 знаков после запятой.
Формат: [-]DD.DDDDDD или [-]DD (целые градусы)
Примеры корректных значений:
- 45.123456
- -75.987654
- 0
- 90.000000
- -90
Долгота (longitude)¶
Паттерн генерирует значения долготы в диапазоне от -180 до 180 градусов с точностью до 6 знаков после запятой.
Формат: [-]DDD.DDDDDD или [-]DDD (целые градусы)
Примеры корректных значений:
- 120.123456
- -175.987654
- 0
- 180.000000
- -180
Использование в моделях данных¶
При использовании этих паттернов в моделях данных, сгенерированные строки могут быть преобразованы в числовые значения:
from dataclasses import dataclass
from decimal import Decimal
@dataclass
class Location:
latitude_str: str
longitude_str: str
@property
def latitude(self) -> Decimal:
return Decimal(self.latitude_str)
@property
def longitude(self) -> Decimal:
return Decimal(self.longitude_str)
Это позволяет работать с координатами как с точными десятичными значениями, сохраняя при этом возможность генерации через строковые паттерны.