0
Lokið

Вычисление площадей огромных территорий (Субъектов Федерации)

Сергей Попов 12 ár síðan updated by Михаил Власов 12 ár síðan 6

Что-то подвигло меня заполнить в семантике поле "Площадь" для САМАРСКОЙ ОБЛАСТИ. Думаю - "Проверю, на сколько различаются значения вычисляемые в массовых операциях (с последующим внесением в семантику) и отображаемые на первой закладке окна "Свойств объектов".

Сейчас и Вас поразит результат.

В семантику (вещественное поле) попало значение: -92233720368,5478

На 1-ой закладке вычислена прощадь: 1,071162034E0011

Но ширина ограничена и отображается только: 1,071162034E001

Обращаю внимание на ОТРИЦАТЕЛЬНУЮ ПЛОЩАДЬ.

Неужели чудо, вот она - геометрия нематериальных миров, пространство тёмных материй и мнимых величин.

Увы, банальная ошибка.

Предагаю:

1. Исправить алгоритм вычисления площади.

2. Увеличить ширину значения "Площадь" закладки "Объект" окна свойств объекта для предотвращения недоразумений.

Изначально ИнГео явно не имела в виду таких эпических масштабов. Так, город, максимум - с пригородами Хотя сейчас у нас на карту тоже входит вся Самарская область. К счастью, вычислять ее площадь для нас неактуально. Кстати, одной из причин этой ошибки может быть неучёт в ИнГео сферичности Земли, чем так гордятся адепты Мапинфо. Но не уверен, что овчинка (учёт сферичности) стоит выделки (затрат, издержек и отрицательных побочных эффектов). Да это и не бог весть какая ошибка. Вон намедни одна француженка получила счёт за телефон, который в 6 тысяч раз превосходил годовой бюждет всей Франции. Причём менеджер телефонной компании в жёсткой форме потребовал заплатить...

1. Проверил, семантику заполняет правильно. На 1-ой вкладке "1,071748279E0011". В поле данных "107174827900,235".

2. Поле расширим.

3. В текущей версии ИнГео работает только с топопланами. В пятой версии будет считать с учетом поправок для проекций и с учетом сферы для широты/долготы на эллипсоиде.

В семантику (вещественное поле) попало значение: -92233720368,5478
Видимо в БД указан тип данных, в который не поместилось это значение.

Изначально пробовал в  ИнГЕО 4.4.0.177 с СУБД MS-SQL.

Объект не выходил за границы территории.

В СУБД есть возможность указать количество разрядов числа, но ИнГЕО вроде на даёт пользователю возможности вмешиваться в этот процесс.

По хорошему, в тот момент, когда значение не поместилось, необходимо уведомить пользователя и ничего не делать.

Попробую в последних версиях ИнГЕО.


 

Уточню: Тип поля в MS SQL "float"? а то там есть "numeric" - это плохой выбор для хранения площади, и ,имхо, плохой выбор вообще для вещественных чисел.