Подскажите, пожалуйста, как программно (Mapbasic) вывести в Excel (или DBF ) координаты из базы в Mapinfo?
(Объекты)
Координаты MapBasic
-
- Участник
- Сообщения: 66
- Зарегистрирован: 03 авг 2010, 04:24
- Репутация: 0
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Координаты MapBasic
на вопрос в таком телеграфном стиле стоит получить ответ в таком же:
"надо программно обойти все объекты и для каждого из них получить координаты всех вершин. результат записать в файл. как найдете прямую запись в эти два формата из Mapbasic обязательно дайте знать."
"надо программно обойти все объекты и для каждого из них получить координаты всех вершин. результат записать в файл. как найдете прямую запись в эти два формата из Mapbasic обязательно дайте знать."
-
- Участник
- Сообщения: 66
- Зарегистрирован: 03 авг 2010, 04:24
- Репутация: 0
Re: Координаты MapBasic
Да, алгоритм я понимаю.
Но вычислить вершины объекта ...
Ведь вначале нужно определить, точно ли это объект...
А программно?
Подскажите, напишите подпрограммку. Пожалуйста!
Но вычислить вершины объекта ...
Ведь вначале нужно определить, точно ли это объект...
А программно?
Подскажите, напишите подпрограммку. Пожалуйста!
- asgs
- Участник
- Сообщения: 89
- Зарегистрирован: 04 авг 2010, 06:35
- Репутация: 1
- Контактная информация:
Re: Координаты MapBasic
Dim i,j,k,n,ii,cnt As Integer
Dim A_Obj As Alias
Dim Cur_Obj As Object
Dim X,Y As Float
cnt = TableInfo(имя_таблицы,TAB_INFO_NROWS)
A_Obj = "имя_таблицы"+".obj"
for i=1 to cnt
fetch rec i from имя_таблицы
if A_Obj then
Cur_Obj = A_Obj 'Далее предполагаем, что в таблице одни регионы
k = ObjectInfo(Cur_Obj,OBJ_INFO_NPOLYGONS)
for j=1 to k
n = ObjectInfo(Cur_Obj,OBJ_INFO_NPOLYGONS+j)
for ii=1 to n
X = ObjectNodeX(Cur_Obj,j,ii)
Y = ObjectNodeY(Cur_Obj,j,ii)
'здесь скидываем координаты в файл
next
next
end if
next
Как-то так. Для всех типов объектов лениво писать, да и неудобно.
Про прямую запись в DBF - как-то давненько уже писал на C++ прямую читалку DBF, при желании можно переделать на запись и прикрутить к MapInfo через DLL, но это уже не уровень ТС, судя по вопросам
Dim A_Obj As Alias
Dim Cur_Obj As Object
Dim X,Y As Float
cnt = TableInfo(имя_таблицы,TAB_INFO_NROWS)
A_Obj = "имя_таблицы"+".obj"
for i=1 to cnt
fetch rec i from имя_таблицы
if A_Obj then
Cur_Obj = A_Obj 'Далее предполагаем, что в таблице одни регионы
k = ObjectInfo(Cur_Obj,OBJ_INFO_NPOLYGONS)
for j=1 to k
n = ObjectInfo(Cur_Obj,OBJ_INFO_NPOLYGONS+j)
for ii=1 to n
X = ObjectNodeX(Cur_Obj,j,ii)
Y = ObjectNodeY(Cur_Obj,j,ii)
'здесь скидываем координаты в файл
next
next
end if
next
Как-то так. Для всех типов объектов лениво писать, да и неудобно.
Про прямую запись в DBF - как-то давненько уже писал на C++ прямую читалку DBF, при желании можно переделать на запись и прикрутить к MapInfo через DLL, но это уже не уровень ТС, судя по вопросам

Злобный йожег
-
- Участник
- Сообщения: 66
- Зарегистрирован: 03 авг 2010, 04:24
- Репутация: 0
Re: Координаты MapBasic
Большое спасибо! Буду пробовать...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость