poniedziałek, 15 sierpnia 2011

Connect To CAD

Można wykorzystać język Object Pascal  do np. sterowania AutoCadem, poniżej zaprezentuje kod źródłowy który umożliwia narysowanie dwóch okręgów stycznych do siebie.

Co do kwestii rysowania możliwości są ogromne, można stworzyć np. własną bibliotekę K1 i praktycznie wykorzystać AutoCada do kreślenia mapy numerycznej (współrzędne podaje się w kodzie...)

function ConnectToCAD1:Boolean;
  begin
  Result:=False;
  try
   try
   AcadApp:=GetActiveOleObject('AutoCad.Application.17');
   except
   AcadApp:=CreateOleObject('AutoCad.Application.17');
   AcadApp.Visible:=True;
   end;
   AcadDoc:=AcadApp.ActiveDocument;
   if ACadApp.Documents.Count >0 then
   begin
   AcadDwg:=AcadDoc.ModelSpace;
   Result:=True;
   end
   else
   ShowMessage('yyy');
   except
   ShowMessage('xxx');
   end;
   end;

   function p2d(x,y:Double):OleVariant;
   begin
   Result:=VarArrayCreate([0,2],varDouble);
   Result[0]:=x;  Result[1]:=y; Result[2]:=0;
   end;

procedure TForm1.Button2Click(Sender: TObject);
var
Okr1,Okr2:OleVariant;
x,y,r1,r2:Double;
begin
ConnectToCAD1;
x:=50; y:=50;
r1:= 20; r2:=30;
Okr1:=AcadDwg.AddCircle(p2d(x,y),r1);
Okr2:=AcadDwg.AddCircle(p2d(x+r1+r2,y),r2)


W kodzie podane są współrzędne środka oraz promienie.

x:=50; y:=50;
r1:= 20; r2:=30;
Okr1:=AcadDwg.AddCircle(p2d(x,y),r1);
Okr2:=AcadDwg.AddCircle(p2d(x+r1+r2,y),r2)



Oto efekt :

sobota, 6 sierpnia 2011

Wirtualny Tachimetr

Następnym programem który chciałbym Wam zaprezentować to "Wirtualny Tachimetr"

Program umożliwia zamianę   współrzędnych prostokątnych na biegunowe.





W programie mamy już współrzędne testowe, które posłużyły się w wersjach próbnych programu.

Link do programu :

http://geovision.prv.pl/Wirtualny_Tachimetr.exe

wtorek, 2 sierpnia 2011

Microstation V8i i WMS na przykładzie Geoportalu

Przedstawiam poniżej prosty sposób podłączenia ortofotomapy z geoportalu , np w układzie 2000

Jest to plik orto_2000.xwms , który jest xml'em czytelnym dla microstation zawartość pliku przedstawiam poniżej

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <BentleyWMSFile>
    <VERSION>1.2</VERSION>
    <URL>http://www.serverwms.pl/cgi-bin/geoportal?</URL>
    <REQUEST>
        <VERSION>1.1.1</VERSION>
        <SRS>EPSG:2177</SRS>
        <LAYERS>geoportal_orto</LAYERS>
        <STYLES />
        <FORMAT>image/jpeg</FORMAT>
        <TRANSPARENT>FALSE</TRANSPARENT>
    </REQUEST>
    <MAPEXTENT>
        <BBOX>6390979.5111, 5466989.5093, 6609020.4889, 6078869.0066</BBOX>
    </MAPEXTENT>
    <LayerList>
        <LAYER TITLE="Ortofotomapa" NAME="geoportal_orto" Opaque="1" />
    </LayerList>
    <SERVICE>
        <MAXWIDTH>1024</MAXWIDTH>
        <MAXHEIGHT>1024</MAXHEIGHT>
    </SERVICE>
    <CapabilitiesRequest>
        <URL>http://www.serverwms.pl/cgi-bin/geoportal</URL>
    </CapabilitiesRequest>
    <EditorData>
        <RangeMethod>Calculated</RangeMethod>
        <LayerRange>Intersection</LayerRange>
        <UseModelCoordSysUsefulRange>True</UseModelCoordSysUsefulRange>
        <UseMapCoordSysUsefulRange>True</UseMapCoordSysUsefulRange>
        <ExplicitSRS>True</ExplicitSRS>
    </EditorData>
</BentleyWMSFile>


Dla naszego układu najważniejszy jest oczywiście czwarty wers pliku czyli EPSG:2177


Taki plik można podłączyć do Microstation i mamy WMS dla naszych punktów
W poniższych slajdach zaprezentuje jak to się robi w trzech krokach ...

1. Uruchamiamy Microstation i importujemy punkty w ukladzie 2000 z pliku tekstowego

2 . Wybieramy Raster Menager i Attach .... WMS ...

Końcowy efekt powinien wyglądać tak ...



Poniżej przykład pliku xwms( ortofotomapy dla układu 92 ). Jeżeli chcemy inne dane np: kataster czy budynki to w <URL> należy wpisać adresy z tej oto strony :

http://terraobserver.blogspot.com/2009/02/polskie-serwery-wms.html


<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<BentleyWMSFile>
    <VERSION>1.2</VERSION>
    <URL>sdi.geoportal.gov.pl/WMS_ORTO/WMService.aspx?</URL>
    <REQUEST>
        <VERSION>1.1.1</VERSION>
        <SRS>EPSG:2180</SRS>
        <LAYERS>ORTOFOTO</LAYERS>
        <STYLES />
        <FORMAT>image/jpeg</FORMAT>
        <TRANSPARENT>FALSE</TRANSPARENT>
    </REQUEST>
    <MAPEXTENT>
        <BBOX>283752.259435335,62176.5452316469,559228.039343495,773286.914641445</BBOX>
    </MAPEXTENT>
    <LayerList>
        <LAYER TITLE="ORTOFOTO" NAME="ORTOFOTO" />
    </LayerList>
    <SERVICE>
        <MAXWIDTH>1024</MAXWIDTH>
        <MAXHEIGHT>1024</MAXHEIGHT>
    </SERVICE>
    <CapabilitiesRequest>
        <URL>www.kngk.agh.edu.pl/pliki/cwiczenia/wms/wms_orto.xml</URL>
    </CapabilitiesRequest>
    <EditorData>
        <RangeMethod>Calculated</RangeMethod>
        <LayerRange>Intersection</LayerRange>
        <UseModelCoordSysUsefulRange>True</UseModelCoordSysUsefulRange>
        <UseMapCoordSysUsefulRange>False</UseMapCoordSysUsefulRange>
        <ExplicitSRS>False</ExplicitSRS>
    </EditorData>
</BentleyWMSFile>