Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Предложения по составлению программы на языке MapBasic.





Настоящие предложения иллюстрируются на конкретной программе , составленной для создания баз данных и документов , ведущихся при инвентаризации и межевании земель.

1. Составление программы на языке MapBasic следует начинать с программирования главного меню как средства пользования. Пусть необходимо запрограммировать меню «Инвентаризация и межевание земель» с подменю Инвентаризация земель", "Межевание земель"((рис.13.59).

Рис.13.59

Для этого в MapBasic существуют операторы Greate Menu u Alter Menu . Основная программа Main , реализующая это меню , главное в программе , будет иметь вид :

Include "Mapbasic.def"

Declare Sub Main

Declare Sub Invent

Declare Sub Mejevan

Sub Main

Create Menu

"Инвентаризация и межевание земель"

As

"Инвентаризация земель" Calling Invent,

"Межевание земель" Calling Mejevan

Alter Menu Bar Add "Инвентаризация и межевание земель"

End Sub

Здесь оператором Calling осуществляется вызов процедур: Invent u Mejevan, соответствующих командам меню «Инвентаризация земель», «Межевание земель».

Настоящая программа работать не будет, пока не будут введены эти процедуры. Текст процедуры Invent представлен ниже. Его последовательными фрагментами будем излагать возможности MapBasic. В начале следуют операторы Sub, Dim, определяются значения переменных типа String.

'Процедура Invent

Sub Invent

Dim Pol1(100) as object

Dim Pol,yf as object

Dim Zona,Nkvart,Nuch,Nomuch,Nzap,Nmz,j,i,i1 as Smallint

Dim Gor,Namisp1,Namisp2 as String

Dim Kadmas as Smallint,winnum As Integer

Dim Nt(50),Nomzn(50),Nomuch1 as Smallint

Dim x(50),y(50),xl(50),yl(50),a,b,c,d as Float

'Dim fio,adr,vid,nsv as String

Dim xc,yc,xm,ym,xmax(100),ymax(100),ymin(100),xmin(100) as Float

Dim xmax1,ymax1,xmin1,ymin1 as Float

Dim Reestr1 as string

Dim sobstv,kadnom1,fio1,adr1,vid1,nsv1,pl1,rab,rab2 as string



Reestr1="Реестр землевладельцев(землепользователей)"+Chr$(10)+

"в кадастровом квартале"

kadnom1="Кадастровый номер"+Chr$(10)+

"землевладельца(землепользователя)"

fio1="ФИО владельца(пользователя)"

adr1="Местоположение землевладения,землепользования(адрес)"

vid1="Вид предоставления земли"

Nsv1="Номер свидетельства"

Pl1="Площадь"

Поскольку будет создаваться база данных « Реестр землепользователей» с именем Reestr, то для этого применяется оператор Greate Table ... File.

'Создать таблицу "Реестр..."

Create Table Reestr

( kadnom SmallInt,

Fio char(30),

Adr char(20),

Vid char(10),

Nsv char(7),

Pl Float )

File "C:\MAPINFO\Reestr.tab"

В нем kadnom, fio, adr, vid, Nsv, Pl - атрибуты базы данных Reestr. Каждому атрибуту определен тип: Smallint, char, Float и другие. После слова File следует спецификация файла, в котором будет находиться база данных.

Базы данных в MapInfoопределены как таблицы, а атрибуты как поля.

Данной базе данных соответствует карта земельных участков, заданных координатами поворотных точек границ. Имя карты соответствует имени таблицы. Она создается оператором Greate Map For... . Oператором Set Coord-Sys Nonearth Units «m» устанавливается плоская прямоугольная система координат , единицы измерений - метры. Оператором Boundsтут же определяются минимальные и максимальные значения координат для данной карты.

Create Map For Reestr

Set CoordSys Nonearth Units "m"

Bounds(4000,-1700)(5000,-1600)

Поскольку базы данных заполняют по координатам, то необходимо их ввести по всем участкам. Сами координаты находятся в файле данных «Zemuch.dat»,пример которого приведен ниже.

Ivanov Petrov

Novgorod 4 5

3 2

1 4 Diskov

1 50 50

2 150 50

3 100 100

4 50 100

2 4 Karpatin

1 50 100

2 100 100

3 100 150

4 50 150

 

Открытие файла осуществляется оператором Open File ... For Input as # ... , ввод данных оператором Input #... построчно.

'Ввод данных

Open File "Zemuch.dat" For Input as #1

Input #1,Namisp1,Namisp2

Input #1,Gor,Zona,Kadmas

Input #1,Nkvart,Nuch

Nzap=0

i=1

Do

Input #1,Nomuch,Nmz,sobstv

j=1

Do

Input #1,Nt(j),x(j),y(j)

j=j+1

Loop while (j<=Nmz)

 

В данном фрагменте введены имена исполнителей (Namisp1,Namisp2), название города (Gor), кадастровые номера зоны (Zona), массива (Kadmas), квартала (Nkvart), число участков (Nuch), номер участка (Nomuch), число межевых знаков (Nmz) или точек поворота границы. Вложенным циклом Do осуществляется ввод номеров точек участка Nt, x, y. Каждый участок создается как полигон операторами Create Region Into Variable Pol 0 с использованием цикла For и оператора Alter Object Pol Node Add... .

Create Region Into Variable Pol 0

For i1=1 to Nmz

Alter Object Pol Node Add (x(i1),y(i1))

Next

 

Этим оператором добавляется каждая поворотная точка участка для создания географического объекта с именем Pol . Такие объекты имеют тип Object , что описано в начале программы.

После того как полигон создан, он заносится в базу данных Reestr оператором Insert Into Reestr (Obj) Values (Pol) , оператором Update Reestr Set Kadnom = Nomuchзаполняется поле kadnom таблицы Reestr в записи с номером nzap.









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2019 zdamsam.ru Размещенные материалы защищены законодательством РФ.