|
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 ![]() ![]() ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... ![]() Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... ![]() Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... ![]() ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|