Код: Выделить всё
CoordSys Earth Projection 8, 104, "m", 37.5, 55.666666666667, 1, 113.5, -39.63 Bounds (-30000000, -15000000) (30000000, 15000000)
Имеют две таблицы из трех. Третья, видимо с объектами, имеет СК:
Бред какой то. Вы пишете, что вам не хватает мощности, но при этом оперируете таблицами, мало того, что в разных системах координат, так еще и с границами астрономических размеров.
В приведенном коде, никакой это не скрипт на Mapbasic'е, а просто линейный код, нет ни строчки:
1) комментариев, что недопустимо, если вы просите его посмотреть. Так не принято - читающий код не должен за вас додумывать, а что собственно вы хотели получить или сделать.
2) Это относиться и к описанию задачи. С телепатами тут совсем плохо - это не форум биржевых аналитиков.
3) Ни одна из приведенных команд не устанавливает систему координат вычислений - они проводятся в "CoordSys Earth Projection 1, 0" - объем лишних вычислений можно только оценить.
Далее по тексту:
1) если вы вычисляете что то, то имеет смысл это хоть иногда сохранять, особенно в случае "ничего не выходит". Строчек сохранения я не увидел, одно это переполнит память Mapinfo.
2) Где установка системы координат для расчетов: "set coordsys table grid" или аналогичная ?
3) Кто вас научил использовать названия внутренних переменных в качестве названия полей или таблиц
? таблица OBJ - "Вы серьезно"!? Да одно это могло создать тысячу неуловимых ошибок!
4) И теперь самое загадочное:
Код: Выделить всё
Nearest 1000 From Table Selection to grid_p Into d1 Data polyID = grid_p.ID
Update d1 set Dist_Km = ObjectLen(obj, "m")
Add Column "grid" (tran)From d1 Set To min(Dist_Km) Where COL1 = COL1
В переводе на русский тут сказано:
1. выбрать 1000 ближайших точек
из таблицы Obj - объектов к узлам сетки (?!) и записать их в кросс-таблицу d1 ( создать 12 миллионов записей?) без ограничения минимального и максимального расстояния (!?) и сохранить значение точки из таблицы grid_p.ID (!?) ;
2. записать расстояние между найденными узлами в кросс-таблицу;
3. добавить в таблицу "другая сетка" (grid) временную колонку "tran" со значением минимум из колонки кросс-таблицы !?
И только после этого компьютер не справляется?
А для чего вычислены 999 ДРУГИХ расстояний? Или почему расстояния вычисляются до ОДНОЙ сетки, а интересны расстояния до ДРУГОЙ сетки?
Почему добавляются временные колонки, а не заполняются значения в заранее созданных?
Почему после создания таблиц d1-d3 они ни разу не сохраняются, а висят в памяти компьютера?
Почему для таблиц с массовым добавление данных НЕ отключен режим "сохранять предыдущее состояние"?
И как так вышло, что колонка "Dist_Km" хранит значения в метрах?
Почему точек в "grid_p" так много, если априори ясно, что 40% из них не участвуют в расчетах?
ЗЫ
И в довершение всего, поле grid_p.ID, используемое в качестве уникального индекса ( я так полагаю ), в присланных таблицах == 0 ! А зачем тогда его сохранять в кросс-таблицы?
ЗЗЫ
Не надо присылать текст в формате WORD. Это не безопасно.