Из полигона в точки

MapInfo, MapBasic
Ответить
Dartix
Участник
Сообщения: 61
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 2

Из полигона в точки

Сообщение Dartix » 03 окт 2018, 10:03

Добрый день.

Подскажите, пожалуйста, как с помощью MB из таблицы с полигонами сделать таблицу с точками (узлами границ), чтобы также наследовались атрибутивные данные полигонов?

1985student
Участник
Сообщения: 54
Зарегистрирован: 02 сен 2010, 22:44
Репутация: 2
Откуда: Нижний Новгород

Re: Из полигона в точки

Сообщение 1985student » 03 окт 2018, 10:33

update ?????? set obj = Centroid(obj) где ?????? название таблицы только на латинице, но это если центроиды нужны

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 1724
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1057
Откуда: Казань

Re: Из полигона в точки

Сообщение Игорь Белов » 03 окт 2018, 14:19

Dartix писал(а):
03 окт 2018, 10:03
как с помощью MB из таблицы с полигонами сделать таблицу с точками (узлами границ), чтобы также наследовались атрибутивные данные полигонов?
Очень просто - написать программу :D

dim2906
Новоприбывший
Сообщения: 6
Зарегистрирован: 22 июн 2018, 03:04
Репутация: 1
Откуда: г. Барнаул
Контактная информация:

Re: Из полигона в точки

Сообщение dim2906 » 03 окт 2018, 16:33

Создавать точки с координатами узлов как то так. На работоспособность код не проверял.

Declare Sub Main
Declare Sub Insert_Object_point(ByVal objPoligon as Object)

Dim pathTable, nmTable, poligonTable as String

Sub Main()
poligonTable ="таблица_полигонов"
pathTable ="D:\таблица_точек.tab"
nmTable = PathToTableName$(pathTable )
Set CoordSys Table poligonTable
Create Table nmTable Using poligonTable File FullNameTable
Create Map For nmTable CoordSys Table poligonTable

Dim objPoligon as Object
Dim indexTabl As Integer
indexTabl=1
Select * from poligonTable into poligonTableSelect Noselect
Fetch First From poligonTableSelect
Do While Not EOT(poligonTableSelect )

if poligonTableSelect.obj then
objPoligon = poligonTableSelect.obj
Insert_Object_point( objPoligon ) )
' Update nmTable
End If
indexTabl=indexTabl+1

Fetch Next From poligonTableSelect
Loop

Close Table poligonTableSelect

End Sub

Sub Insert_Object_point(ByVal objPoligon as Object)

Dim countNode, node_num , indexPolugon as Integer
Dim NPOLYGONS as Integer 'количество полигонов
Dim x, y as Float

NPOLYGONS=ObjectInfo(objPoligon, OBJ_INFO_NPOLYGONS)

For indexPolugon=1 To NPOLYGONS

countNode = ObjectInfo(objPoligon , OBJ_INFO_NPOLYGONS+indexPolugon) 'число узлов N-ого полигона

For node_num=1 to countNode

x=ObjectNodeX( objPoligon , indexPolugon, node_num)
y=ObjectNodeY( objPoligon , indexPolugon, node_num)

Insert Into nmTable (Obj) Values ( CreatePoint(x, y) )

Next
Next

End Sub

Dartix
Участник
Сообщения: 61
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 2

Re: Из полигона в точки

Сообщение Dartix » 04 окт 2018, 14:38

Спасибо, буду пробовать!

gudvil
Новоприбывший
Сообщения: 1
Зарегистрирован: 07 дек 2018, 13:20
Репутация: 0
Откуда: Астана

Re: Из полигона в точки

Сообщение gudvil » 07 дек 2018, 13:48

Можно подробнее описать, процесс
У меня такая же проблема, нужно из большого количества полигонов выдернуть точки координат узлов

Аватара пользователя
MI user
Интересующийся
Сообщения: 25
Зарегистрирован: 14 янв 2013, 17:08
Репутация: 10
Контактная информация:

Re: Из полигона в точки

Сообщение MI user » 07 дек 2018, 15:45

gudvil писал(а):
07 дек 2018, 13:48
нужно из большого количества полигонов выдернуть точки координат узлов
Для этой задачи проще использовать утилиту.

Ответить

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

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

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