Рисование полигонов из файла

MapInfo, MapBasic
Ответить
Doc.FoUkS
Новоприбывший
Сообщения: 2
Зарегистрирован: 17 апр 2010, 00:35
Репутация: 0
Откуда: Moscow Fucking City

Рисование полигонов из файла

Сообщение Doc.FoUkS »

Люди добрые! Помогите) У меня стоит мапбасик 9.5. Нужно из файла (.txt) нарисовать на карте полигончики. В самом файле координаты x и y. Данные вроде как считываются и заносятся в массив, а уже от него начинаем плясать))) Проблема то в том, что при создании полигона создается только точка с какими-то левыми координатами и басику просто пофиг, будь то координаты из файла, либо координаты, которые указываешь в самом коде. Если последние 2 пары координат 0 и 0, то появляется просто черная линия. Можете подсказать в чем проблемка может заключаться :)
Хакеры всех стран - ОБЪЕДИНЯЙТЕСЬ
bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Рисование полигонов из файла

Сообщение bim2010 »

Есть несколько вариантов:
1. connectthedots_MLC

Создает полигон или полилинию, соединяющие выбранные точки. Добавляет получившийся объект в конец исходной таблицы. Игнорирует удаленные и не точечные объекты выборки. По желанию, удаляет исходные точки.
connectthedots_MLC.ini 'языковой' файл, который должен быть расположен в той же директории, что и MBX. Если файл не существует, connectthedots_MLC.mbx использует только англоязычный интерфейс. Другие языки могут быть добавлены в дальнейшем при условии соблюдения структуры INI файла.

2. MITAB

3. OGR

Еще советую разобраться с форматом обмена данными Mapinfo MIF. Т.к. mif и есть текстовый формат MI.

А вообще - текст в студию. Ваш вариант вполне допустим. Необходимо уточнить из TXT в TAB или MIF?
Doc.FoUkS
Новоприбывший
Сообщения: 2
Зарегистрирован: 17 апр 2010, 00:35
Репутация: 0
Откуда: Moscow Fucking City

Re: Рисование полигонов из файла

Сообщение Doc.FoUkS »

вообщем в TXT следующая запись (к примеру):
3179426.116988,6143454.999979
3179599.039028,6143453.499982
3179596.695116,6143398.499972
3179424.554329,6143402.99999
где первая цифорка - координата X, а через запятую - координата Y. Т.е нужно из текстовика объект в табличку внести, что он делает, но не ахти как адекватно....
сам код выглядит так:

Код: Выделить всё

Sub Renew
Dim vlist(60) As Point
Dim tot, i As Integer,
       myobj As Object,
	fileName as string,
	tName as string
      
 tot = 1 
set CoordSys Earth
 'OnError GoTo exit_gracefully'

FileName = FileOpenDlg("","","TXT","Открыть файл координат")

	Open File FileName For Input As #1

 Do While Not EOF(1)  
    Input #1,vlist(tot).x,vlist(tot).y 
       tot = tot + 1
loop
tName = TableInfo(1,TAB_INFO_NAME)
Create Region Into Variable myobj 0
for i=1 to tot-1
Alter Object myobj Node Add (vlist(i).x, vlist(i).y)
print tName+"    "+vlist(i).x+"    "+vlist(i).y

Next
Insert Into Create_Object (obj)
Values (myobj)

Print "Объект успешно создан"

End Sub
Хакеры всех стран - ОБЪЕДИНЯЙТЕСЬ
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Рисование полигонов из файла

Сообщение Boris »

set CoordSys Earth
и что это по вашему за система координат такая? что в руководстве и хелпе написано?
bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Рисование полигонов из файла

Сообщение bim2010 »

MapBasic Руководстово пользователя

Страница 166
Глава 9: Графические объекты
Следующий пример иллюстрирует эту процедуру:

Include "mapbasic.def"
Type Point

x As Float
y As Float
End Type
Dim objcoord(5) As Point
Dim numnodes, i As Integer, myobj As Object
numnodes = 3
set CoordSys Earth
objcoord(1).x = -89.213 objcoord(1).y = 32.017
objcoord(2).x = -89.204 objcoord(2).y = 32.112
objcoord(3).x = -89.187 objcoord(3).y = 32.096
Create Pline Into Variable myobj 0
For i = 1 to numnodes
Alter Object myobj Node Add (objcoord(i).x,objcoord(i).y)
Next
Insert Into cables (obj) Values (myobj)

Посмотрите здесь _1_ _2_ _3_

{http://read.pudn.com/downloads81/source ... .bas__.htm}
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя