www.map-info.ru :: Просмотр темы - Выбор точек случайным образом внутри области
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  
На страницу Пред.  1, 2, 3  След.
 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Ср Мар 17, 2010 1:04 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

как данные из таблицы MapInfo экспортировать в Excel? Есть какая-то стандартная команда или нужно делать средствами MapBasic?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Ср Мар 17, 2010 1:31 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Таблица/Экспорт - в CSV, например. Или копипастом Smile На кодировки только нужно обратить внимание.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Ср Мар 17, 2010 3:54 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Первый вариант как по мне не очень годится, а вот второй - отлично ))))
Very Happy спасибо )))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Вт Мар 23, 2010 4:55 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Обозначив границы нужной области координатами хочу пройтись по заданному квадрату выбирая координаты через определенный интервал. Примерно так:

n=3

xg1=24.5103
yg1=48.3404
xg2=24.6529
yg2=48.2402

dx=xg2-xg1
dy=yg2-yg1
' Задаю шаг
stepx=dx/n
stepy=dy/n

For j=1 to n
For i=1 to n
x=xg1+stepx
y=yg1+stepy
print x
print y
Next
Next

Но подсчитывает одну и ту же координату 3 раза, а хочу, чтоб добавлялся каждую итерацию шаг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Вт Мар 23, 2010 5:11 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

писал(а):
x=xg1+stepx
print x

ну вы же догадались вывести рассчитываемые координаты в окно сообщений. Если еще выведете туда же значения xg1 и stepx - увидите, что ничего и не должно меняться.
Посмотрите еще раз на формулу, вы добавляете к одному и тому же фиксированному вне цикла значению одно и то же фиксированное вне цикла значение. Где переменная цикла участвует, где добавляется хоть что-то переменное? Ну умножьте что ли stepx на i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Пн Апр 19, 2010 3:55 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Все гораздо проще:

For j=1 to n
x=xg1-stepx
y=y+stepy

For i=1 to n
x=x+stepx

Что делать с этим?
В таком виде нормально все

Dim start_x() as Float
...
redim start_x(10000)

как только меняю вот так:
redim start_x(100000)
вылетает ошибка Overflow.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Пн Апр 19, 2010 4:54 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Максимальный размер массива в приложениях на MapBasic, запускаемых под
MapInfo для Windows, составляет 7000 элементов. При запуске приложений на
MapBasic на других платформах (например, в MapInfo для Windows 95, Windows
NT или Macintosh) максимальный размер массива составляет 32767 элементов.

я понимаю с этим ограничением уже ничего не сделать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пн Апр 19, 2010 8:17 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Конечно, ничего. Это документированное ограничение. Зачем массивы большей длины? Если так нужно, пользуйтесь массивами из массивов, вот уже и 32К*32К элементов. Еще можно и возможно нужно использовать таблицы МапИнфо для хранения таких данных, создавайте временные таблицы и работайте с ними, вместо массивов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Чт Апр 22, 2010 2:41 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

можете привести пример как сделать 32К*32К.

Dim a(), b(),c() as Float
redim a(32767)
redim b(32767)
'объявил три массива, поменял размерность двух.

А как дальше быть? подскажите пожалуйста
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пт Апр 23, 2010 2:01 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Type ArrayOfFloat
A(32000) As Float
End Type

Dim B(32000) As ArrayOfFloat
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Сб Май 08, 2010 6:39 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вместо массивов использовал таблицы, все получилось, спасибо за помощь.

Правда при выбор 1млн значений и расчет расстояний занимает 5 часов Exclamation . Причем пробовал на разных машинах делать. В чем проблема? МапБейсик медленный интерпритатор или динамическая запись значений в таблицу? Если как-то задать размерность таблицы, что-ли? может быстрее работать будет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Чт Май 13, 2010 7:42 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Не глядя на то, что у вас получилось сложно сказать - почему так долго. Короче, всегда есть возможность оптимизации.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Gazi



Зарегистрирован: 14.02.2010
Сообщения: 30

СообщениеДобавлено: Чт Май 13, 2010 2:58 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

в хелпе ничего подходящего не нашел. в MapBasic можно задать заведомо размер таблицы (подобно хтмл)?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Чт Май 13, 2010 6:35 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Причем тут размер таблицы? Запросы к этой таблице покажите хотя бы. Индексирована ли таблица по полям, которые участвуют в секции Where запросов? На алгоритм внимательно взгляните, можно ли избавиться от лишних, частоповторяющихся запросов в процесс расчета? Что-то закэшировать в структуры MapBasic и т.д.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Arhara



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Сб Май 15, 2010 4:17 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

у вас - "голый" расчет расстояний. не ясно как именно вы создаете граф, но если вы его потом выводите в таблицу, в которой существуют только числа, то зачем тогда вообще использовать для расчетов MapInfo?
Выведите в таблицу в формате MS Access, простой командой "Сохранить копию" и "отмучьте" свой алгоритм там с использованием VBA и индексов в таблицах Access. Acceess, хоть и простая, но все же СУБД, в ней и запросы быстрее выполняются и индексы лучше, да и программировать в ней в VBA гораздо сподручней.
Если и там получится 5 часов - тогда либо так и должно быть, либо 1 млн. для такой задачи с таким алгоритмом - избыточный размер.
А в MB оставьте только "экспорт-импорт" да проверку "посчиталось - не посчиталось".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru