Страница 1 из 1

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

Добавлено: 03 окт 2018, 10:03
Dartix
Добрый день.

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

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

Добавлено: 03 окт 2018, 10:33
1985student
update ?????? set obj = Centroid(obj) где ?????? название таблицы только на латинице, но это если центроиды нужны

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

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

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

Добавлено: 03 окт 2018, 16:33
dim2906
Создавать точки с координатами узлов как то так. На работоспособность код не проверял.

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

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

Добавлено: 04 окт 2018, 14:38
Dartix
Спасибо, буду пробовать!

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

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

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

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