Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Insert Into Reestr (Obj) Values (Pol)





nzap=nzap+1

Update Reestr Set kadnom=Nomuch

Where Rowid=nzap

 

Для целей отладки программы полезным является оператор Note, выдающий интересуемое сообщение, например

Note "Привет,Nuch="+str$(Nuch),

где str S ( )- функция, преобразующая тип переменной в текстовый.

Когда вся информация считана с файла Zemuch.dаt, он тоже закрывается оператором Close File # 1.

i=i+1

Loop while (i<=Nuch)

Close File #1

 

На основе этих данных создается карта Reestr с помощью операторов Map From..., Set CoordSys..., Bounds, Browse... .

Map From Reestr

Set CoordSys Nonearth Units "m"

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

Browse *From Reestr

 

Документом кадастра земель является чертеж границ землепользования. Он может быть построен графическими средствами MapBasic в виде объекта.

Построение отчета начинается оператором Layout. За ним следуют операторы: Position (...,...), определяющий положение верхнего левого угла отчета в окне Windows, Width , Height- задающие ширину и высоту отчета в определенных единицах (в данном случае в мм). Определяется номер окна winnum, устанавливается система координат отчета - Set CoordSys Layout Units «mm» .

Layout

Position (0,0) Units "mm"

Width 260 Units "mm"

Height 160 Units "mm"

winnum=FrontWindow()

Set CoordSys Layout Units "mm"

Далее идет заполнение самого отчета. При этом используются функции :

Create Text- создание текста ,

Font MakeFont- назначение шрифтов,

Create Line Into Window...- вычерчивание линий ,

Pen Make Pen...- определение характеристик линий .

Create Text

Into Window winnum

" Исполнительный чертеж"+Chr$(10)+

"границ землепользований в квартале №"+Str$(Nkvart)+Chr$(10)+

"кадастрового массива"+Str$(kadmas)+ "г."+Str$(Gor)

(10,20) (120,30)

Font MakeFont("Helv",1,20,Black,White)

Open File "Zemuch.dat" for Input As #1

Input #1,Namisp1,Namisp2

Input #1,Gor,Zona,Kadmas

Input #1,Nkvart,Nuch

i=1

Do

Input #1,Nomuch,Nmz,sobstv

j=1



Do

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

j=j+1

Loop While j<=Nmz

j=1

xmax(i)=x(1)

ymax(i)=y(1)

xmin(i)=x(1)

xmax(i)=x(1)

Do

If(xmax(i)-x(j))<0 then xmax(i)=x(j) End if

If(ymax(i)-y(j))<0 then ymax(i)=y(j) End if

If(xmin(i)-x(j))>0 then xmin(i)=x(j) End if

If(ymin(i)-y(j))>0 then ymin(i)=y(j) End if

j=j+1

Loop While (j<=Nmz)

i=i+1

Loop While (i<=Nuch)

xmax1=xmax(1)

ymax1=ymax(1)

xmin1=xmin(1)

ymin1=ymin(1)

i=1

Do

if(xmax1-xmax(i))<0 then xmax1=xmax(i) end if

if(ymax1-ymax(i))<0 then ymax1=ymax(i) end if

if(xmin1-xmin(i))>0 then xmin1=xmin(i) end if

if(ymin1-ymin(i))>0 then ymin1=ymin(i) end if

i=i+1

Loop While i<=Nuch

Close File #1

Open File "Zemuch.dat" for Input As #1

Input #1,Namisp1,Namisp2

Input #1,Gor,Zona,Kadmas

Input #1,Nkvart,Nuch

i=1

Do

Input #1,Nomuch,Nmz,sobstv

xc=0

yc=0

j=1

Do

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

yl(j)=(xmax1-x(j))+20+30

xl(j)=(y(j)-ymin1)+40

If(j>1) Then Create Line into Window winnum

(xl(j-1),yl(j-1))

(xl(j),yl(j))

Pen MakePen(2,12,Black)

End if

Create Text Into Window winnum

Str$(Nomzn(j))

(xl(j)+1.0,yl(j)+1.0)(xl(j)+6.0,yl(j)+6.0)

Font MakeFont("Helv",1,20,RED,White)

xc=xc+xl(j)/Nmz

yc=yc+yl(j)/Nmz

j=j+1

Loop while(j<=Nmz)

Create Line Into Window winnum

(xl(Nmz),yl(Nmz))

(xl(1),yl(1))

Pen MakePen(2,12,Black)

Create Text Into Window winnum

Str$(Nkvart)+"-"+str$(Nomuch)

(xc,yc)

(xc+10.0,yc+16.0)

Font MakeFont("Helv",1,12,BLACK,White)

i=i+1

Loop while(i<=Nuch)

Close File #1

xm=(ymax1-ymin1)

ym=(xmax1-xmin1)+50

Note "xmax1="+str$(xmax1)+"xmin1="+str$(xmin1)

Note "ymax1="+str$(ymax1)+"ymin1="+str$(ymin1)

Create Text Into Window winnum

"1:2000"

(xm/2, ym+20)

(xm/2+30,ym+25)

Font MakeFont("Helv",1,30,BLACK,White)

Create Text Into Window winnum

"В 1 см 20 м"

(xm/2-5,ym+28)

(xm/2+15,ym+33)

Font MakeFont ("Helv",1,25,BLACK,White)

Create Text Into Window winnum

"Условные обозначения"

(xm/2-20,ym+38)

(xm/2+30,ym+43)

Font MakeFont ("Helv",1,35,Black,White)

Create Line Into Window winnum

(xm/2-35,ym+70) (xm/2-20,ym+70)

Pen MakePen(2,2,BLACK)

Create Text Into Window winnum

"граница квартала"

(xm/2-19,ym+66)

(xm/2+21,ym+71)

Font MakeFont("Helv",1,20,BLACK,White)

Create Line Into Window winnum

(xm/2-35,ym+75)(xm/2-20,ym+75)

Pen MakePen (2,12,Black)

Create Text Into Window winnum

"граница землепользования"

(xm/2-19,ym+72)

(xm/2+21,ym+80)

Font MakeFont("Helv",1,20,Black,White)

Create Text

Str$(Nkvart)+"-"+Str$(Nomuch)+"шифр землепользования"

(xm/2-35,ym+85)

(xm/2+21,ym+90)

Font MakeFont("Helv",1,24,BLACK,White)

Create Text

"Установление границ землепользования"+Chr$(10)+

" в натуре произвел"+Str$(Namisp1)+

Chr$(10)+"План вычертил"+Str$(Namisp2)

(xm/2+6,ym+100)

(xm/2+40,ym+125)

Font MakeFont("Helv",1,16,BLACK,White)

End Sub

 

Характеристики параметров стандартных функций MapBasic описаны в справочной системе языка - Help. Ниже приводится текст процедуры «Межевание земель». Ею осуществляется создание в виде отчета плана земельного участка и вывод его характеристик: местоположения, площади, целевого назначения земель, цели предоставления; геодезических данных :дирекционных углов и длин граничных линий участка .

Процедура Mejevan начинается стандартными операторами Dim.

'Процедура Mejevan

Sub Mejevan

Dim Obl,gor,kadmas, rai,adm,adr,cnazn,cel,ogr,obr,Namisp1,Namisp2,sobstv As String

Dim Zona,Nomuch1,Nkvart,Nuch,Nomuch,Nomzn(30),Nmz,i,j1,j As Smallint

Dim Pl1,x(30),y(30),y1,dirg,diru,dirm ,s ,xc,yc As Float

Dim xl(30),yl(30),maxy ,ys,ys1 as Float

Dim obj_reg as Object

Dim Smeg(30) As String

Dim Win_num as integer

Далее строится окно диалога, которое является средством ввода данных, приведенных выше : местоположения , площади и другие . Открытие окна и его имя задается двумя операторами Dialog и Title. Имя каждого из окошек определяется набором следующих операторов: Control StaticText, Title..., Position..., Control EditText.

Оператором Position определяется положение текста. Единица измерений по горизонтали равна одной четвертой ширины буквы системного шрифта, по вертикали - одной восьмой. Оператор Width задает размер строки в четвертях ширины буквы. Например, номер участка будет начинаться с 14 позиции по горизонтали и с 1,25 позиции по вертикали (Position 56,10). Ширина строки 3 позиции (Width 12). Необязательный здесь оператор Into... присваивает введенный текст определенной переменной. Оператором Id ведется счет строк.

Пример таких реализованных в программе окон приведен на рис.1.59. Именно такими они вначале и проектируются. В заполненном виде по ходу программы они приведены на рис.1,60

Рис.13.60

Рис.13.61

Dialog

Title "Земельный участок"

Control StaticText

Title "Номер участка"

Position 5,10

Control EditText

Into Nomuch1

ID 1

Position 56,10 Width 12

Control StaticText

Title "Область"

Position 5,18

Control EditText

Into Obl

ID 2

Position 56,18 Width 70

Control StaticText

Title "Район"

Position 5,26

Control EditText

Into rai

ID 3

Position 56,26 Width 70

Control StaticText

Title "администрация"

Position 5,34

Control EditText

Into adm

ID 4

Position 65,34 Width 140

Control StaticText

Title "адрес"

Position 5,42

Control EditText

Into adr

ID 4

Position 56,42 Width 140

Control StaticText

Title "Площадь участка кв.м"

Position 5,50

Control EditText

Into Pl1

ID 5

Position 100,50 Width 30

Control StaticText

Title "Основное целевое назначение земель"

Position 5,58

Control EditText

Into Cnazn

ID 6

Position 145,58 Width 100

Control StaticText

Title "Цель предоставления участка"

Position 5,66

Control EditText

Into Cel

ID 7

Position 125,66 Width 160

Control StaticText

Title "Ограничения в пользовании"

Position 5,74

Control EditText

Into Ogr

Id 8

Position 105,74 Width 100

Control StaticText

Title "Обременение правами других лиц"

Position 5,82

Control EditText

Into Obr

ID 9

Position 140,82 Width 100

 

В таком окне желательно разметить стандартные кнопки ОК и Отмена с помощью операторов OKButton, CancelButton.

Control OKButton

Title "OK"

Position 5,100

Control CancelButton

Title "Отмена"

Position 44,100

 

После этого оператором Layoutпрограммируется составление документа аналогично предыдущему в процедуре Invent.

'Отчет по участку- текстовая часть

Layout

Position (0,0)

Units "mm"

Width 160 Units "mm"

Height 260 Units "mm"

Win_num=FrontWindow()

Set CoordSys Layout Units "mm"

Create Text

Into Window Win_num

"1."+Str$(Obl)+"область"+Chr$(10)+

"2."+Str$(rai)+"район"+ Chr$(10)+

"3."+Str$(adm)+"администрация"+Chr$(10)+

"4."+Str$(adr)+Chr$(10)+

"5."+"Площадь участка кв.м."+Str$(Pl1)+Chr$(10)+

"6."+"Основное целевое назначение земель"+Str$(Cnazn)+Chr$(10)+

"7."+"Цель предоставления участка"+Str$(Cel)+Chr$(10)+

"8."+"Ограничения в пользовании"+Str$(ogr)+Chr$(10)+

"9."+"Обременение правами других лиц"+Str$(Obr)+Chr$(10)+

"10."+"Геодезические данные:"

(10,20)(90,90)

Font MakeFont("Helv",1,18,BLACK,White)

Open File "Zemuch.dat" for Input As #1

Input #1, Namisp1,Namisp2

Input #1, Gor,Zona,Kadmas

Input #1, Nkvart,Nuch

i=1

Do while (i<=Nuch)

Input #1,Nomuch,Nmz,sobstv

j=1

Do

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

Note "x(j)="+str$(x(j))

Note "y(j)="+str$(y(j))

j=j+1

Loop while(j<=Nmz)

If(Nomuch=Nomuch1) Then

Exit Do

End If

i=i+1

Loop









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


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