def onImport(self): width = float(self.bboxWidth.text()) height = float(self.bboxHeight.text()) pixWidth = float(self.pixelwidth.text()) self.pixHeight = (pixWidth*height)/width pixHeight = self.pixHeight URL = self.request.text() X = float(self.X) Y = float(self.Y) dx = float(self.dx.text())*1000 dy = float(self.dy.text())*1000 fileLocationWMS = self.tempFolder + self.imageName.text() + '.jpg' Bbox = GIS2BIM.CreateBoundingBox(X,Y,width,height,2) result = GIS2BIM.WMSRequest(URL,Bbox,fileLocationWMS,self.pixelwidth.text(),int(self.pixHeight)) if self.cbGrayscale.checkState(): img = Image.open(fileLocationWMS) fileLocationWMS2 = self.tempFolder + self.imageName.text() + '_gray.jpg' gray_image = ImageOps.grayscale(img) gray_image.save(fileLocationWMS2) else: fileLocationWMS2 = fileLocationWMS ImageAerialPhoto = GIS2BIM_FreeCAD.ImportImage(fileLocationWMS2,width/float(self.scale.text()),height/float(self.scale.text()),1000, str(self.imageName.text()), dx,dy) ImageAerialPhoto.addProperty("App::PropertyString","WMSRequestURL") ImageAerialPhoto.WMSRequestURL = result[2] GIS2BIM_FreeCAD.CreateLayer("GIS_Raster") FreeCAD.activeDocument().getObject("GIS_Raster").addObject(FreeCAD.activeDocument().getObject(ImageAerialPhoto.Label)) FreeCAD.ActiveDocument.recompute() self.close()
def onTest(self): URL = self.request.text() width = float(self.bboxWidth.text()) height = float(self.bboxHeight.text()) fileLocationWMS = self.tempFolder + self.imageName.text() + '.jpg' pixWidth = float(self.pixelwidth.text()) self.pixHeight = int((pixWidth*height)/width) pixHeight = self.pixHeight Bbox = GIS2BIM.CreateBoundingBox(float(self.X),float(self.Y),width,height,2) GIS2BIM.WMSRequest(URL,Bbox,self.tempFileName,pixWidth,pixHeight) if self.cbGrayscale.checkState(): img = Image.open(fileLocationWMS) fileLocationWMS2 = self.tempFolder + self.imageName.text() + '_gray.jpg' gray_image = ImageOps.grayscale(img) gray_image.save(fileLocationWMS2) else: fileLocationWMS2 = fileLocationWMS print(fileLocationWMS2) picture = QPixmap(fileLocationWMS2) picture = picture.scaledToWidth(800) pictheight = picture.height() if pictheight > 600: scale = 600/pictheight pictheight = 600 pictwidth = 800*scale picture = picture.scaledToWidth(pictwidth) else: pictwidth = 800 picture = picture.scaledToWidth(pictwidth) self.pictlabel.setPixmap(picture) self.pictlabel.setGeometry(QtCore.QRect(40, 40, pictwidth-40, pictheight-40)) self.pictlabel.hide() self.pictlabel.show()
def onImport(self): Bbox = GIS2BIM.CreateBoundingBox(float(self.X), float(self.Y), float(self.bboxWidth.text()), float(self.bboxHeight.text()), 2) width = float(self.bboxWidth.text()) height = float(self.bboxHeight.text()) GIS2BIM_FreeCAD.CreateLayer("PDOK") fileLocationWMS = self.tempFolderPath + "wms.jpg" #Create Cadastral Parcels 2D if self.clsCad.isChecked() is True: GIS_2D_Cadastral_Parcel = GIS2BIM_FreeCAD.CreateLayer( "GIS_2D_Cadastral_Parcel") CadastralParcelCurves = GIS2BIM_FreeCAD.CurvesFromWFS( GIS2BIM_NL.NLPDOKCadastreCadastralParcels, Bbox, GIS2BIM_NL.NLPDOKxPathOpenGISposList, -float(self.X), -float(self.Y), 1000, 3, False, False, u"Dashdot", (0.0, 0.0, 0.0)) FreeCAD.activeDocument().getObject( "GIS_2D_Cadastral_Parcel").addObjects(CadastralParcelCurves) FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject("GIS_2D_Cadastral_Parcel")) #Create Building outline 2D if self.clsBld.isChecked() is True: GIS_2D_Building_Outline = GIS2BIM_FreeCAD.CreateLayer( "GIS_2D_Building_Outline") BAGCurves = GIS2BIM_FreeCAD.CurvesFromWFS( GIS2BIM_NL.NLPDOKBAGBuildingCountour, Bbox, GIS2BIM_NL.NLPDOKxPathOpenGISposList, -float(self.X), -float(self.Y), 1000, 3, True, True, u"Solid", (0.7, 0.0, 0.0)) FreeCAD.activeDocument().getObject( "GIS_2D_Building_Outline").addObjects(BAGCurves) FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject("GIS_2D_Building_Outline")) #Create 3D Building BAG 3D V2 if self.clsBAG3D.isChecked() is True: dx = -float(self.X) * 1000 dy = -float(self.Y) * 1000 bboxString = GIS2BIM.CreateBoundingBox( float( GIS2BIM_FreeCAD.ArchSiteCreateCheck(self.sitename).CRS_x), float( GIS2BIM_FreeCAD.ArchSiteCreateCheck(self.sitename).CRS_y), float(self.bboxWidth.text()), float(self.bboxHeight.text()), 0) jsonFileNames = GIS2BIM_NL.BAG3DDownload(Bbox, self.tempFolderPath) #Import JSON for jsonFile in jsonFileNames: meshes = GIS2BIM_FreeCAD.CityJSONImport( jsonFile, self.X, self.Y, 2, float(self.bboxWidth.text()), float(self.bboxHeight.text())) FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject("CityJSON")) # Import Aerialphoto in view if self.clsAerial.isChecked() is True: GIS_Raster = GIS2BIM_FreeCAD.CreateLayer("GIS_Raster") a = GIS2BIM.WMSRequest( GIS2BIM.GetWebServerData("NL_PDOK_Luchtfoto_2020_28992", "webserverRequests", "serverrequestprefix"), Bbox, fileLocationWMS, 3000, 3000) ImageAerialPhoto = GIS2BIM_FreeCAD.ImportImage( fileLocationWMS, width, height, 1000, "luchtfoto2020", 0, 0) ImageAerialPhoto.addProperty("App::PropertyString", "WMSRequestURL") ImageAerialPhoto.WMSRequestURL = a[2] FreeCAD.activeDocument().getObject("GIS_Raster").addObject( FreeCAD.activeDocument().getObject(ImageAerialPhoto.Label)) FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject("GIS_Raster")) #Create Textdata Cadastral Parcels if self.clsAnnotation.isChecked() is True: GIS_Annotation = GIS2BIM_FreeCAD.CreateLayer("GIS_Annotation") textDataCadastralParcels = GIS2BIM.DataFromWFS( GIS2BIM_NL.NLPDOKCadastreCadastralParcelsNummeraanduiding, Bbox, GIS2BIM_NL.NLPDOKxPathOpenGISPos, GIS2BIM_NL.xPathStringsCadastreTextAngle, -float(self.X), -float(self.Y), 1000, 3) textDataOpenbareRuimtenaam = GIS2BIM.DataFromWFS( GIS2BIM_NL.NLPDOKCadastreOpenbareruimtenaam, Bbox, GIS2BIM_NL.NLPDOKxPathOpenGISPos, GIS2BIM_NL.xPathStringsCadastreTextAngle, -float(self.X), -float(self.Y), 1000, 3) placeTextFreeCAD1 = GIS2BIM_FreeCAD.PlaceText( textDataCadastralParcels, 500, 0) placeTextFreeCAD2 = GIS2BIM_FreeCAD.PlaceText( textDataOpenbareRuimtenaam, 2000, 1) FreeCAD.activeDocument().getObject("GIS_Annotation").addObjects( placeTextFreeCAD1) FreeCAD.activeDocument().getObject("GIS_Annotation").addObjects( placeTextFreeCAD2) FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject("GIS_Annotation")) #Create Ruimtelijke plannen outline 2D if self.clsBouwvlak.isChecked() is True: GIS_2D_Ruimtelijke_Plannen = GIS2BIM_FreeCAD.CreateLayer( "GIS_2D_Ruimtelijke_Plannen") RuimtelijkePlannenBouwvlakCurves = GIS2BIM_FreeCAD.CurvesFromWFS( GIS2BIM_NL.NLRuimtelijkeplannenBouwvlak, Bbox, ".//{http://www.opengis.net/gml}posList", -float(self.X), -float(self.Y), 1000, 3, False, False, u"Solid", (0.0, 0.0, 1.0)) FreeCAD.activeDocument().getObject( "GIS_2D_Ruimtelijke_Plannen").addObjects( RuimtelijkePlannenBouwvlakCurves) FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject( "GIS_2D_Ruimtelijke_Plannen")) #Create BGT 2D if self.clsBGT.isChecked() is True: timeout = 150 folderBGT = GIS2BIM_FreeCAD.CreateTempFolder(self.tempFolderName + '/BGT') filepathZIP = folderBGT + '.zip' #Download BGT URL = GIS2BIM_NL.bgtDownloadURL(float(self.X), float(self.Y), float(self.bboxWidth.text()), float(self.bboxHeight.text()), timeout) GIS2BIM.downloadUnzip(URL, filepathZIP, folderBGT) #Create Curves bgt_curves_faces = [ "bgt_begroeidterreindeel", "bgt_onbegroeidterreindeel", "bgt_ondersteunendwaterdeel", "bgt_ondersteunendwegdeel", "bgt_overbruggingsdeel", "bgt_overigbouwwerk", "bgt_waterdeel", "bgt_wegdeel" ] bgt_curves_faces_color = [(223 / 255, 230 / 255, 208 / 255), (223 / 255, 230 / 255, 208 / 255), (205 / 255, 230 / 255, 237 / 255), (226 / 255, 226 / 255, 226 / 255), (234 / 255, 234 / 255, 234 / 255), (220 / 255, 155 / 255, 140 / 255), (205 / 255, 230 / 255, 237 / 255), (234 / 255, 234 / 255, 234 / 255)] bgt_curves_lines = [ "bgt_functioneelgebied", "bgt_gebouwinstallatie", "bgt_kunstwerkdeel", "bgt_overbruggingsdeel", "bgt_overigbouwwerk", "bgt_overigescheiding", "bgt_scheiding", "bgt_spoor", "bgt_tunneldeel" ] xpath = './/{http://www.opengis.net/gml}posList' GIS2BIM_FreeCAD.CreateLayer("BGT") #Draw bgt_curves_lines for i in bgt_curves_lines: path = folderBGT + '/' + i + '.gml' tree = ET.parse(path) Curves = GIS2BIM_FreeCAD.CurvesFromGML( tree, xpath, -float(self.X), -float(self.Y), float(self.bboxWidth.text()), float(self.bboxHeight.text()), 1000, 0, 0, 0, "Solid", (0.7, 0.0, 0.0), (0.0, 0.0, 0.0)) GIS2BIM_FreeCAD.CreateLayer(i) FreeCAD.activeDocument().getObject(i).addObjects(Curves) FreeCAD.activeDocument().getObject("BGT").addObject( FreeCAD.activeDocument().getObject(i)) FreeCAD.ActiveDocument.recompute() for i, j in zip(bgt_curves_faces, bgt_curves_faces_color): path = folderBGT + '/' + i + '.gml' tree = ET.parse(path) Curves = GIS2BIM_FreeCAD.CurvesFromGML( tree, xpath, -float(self.X), -float(self.Y), float(self.bboxWidth.text()), float(self.bboxHeight.text()), 1000, 2, 1, 1, "Solid", (0.7, 0.0, 0.0), j) GIS2BIM_FreeCAD.CreateLayer(i) FreeCAD.activeDocument().getObject(i).addObjects(Curves) FreeCAD.activeDocument().getObject("BGT").addObject( FreeCAD.activeDocument().getObject(i)) FreeCAD.ActiveDocument.recompute() FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject("BGT")) # Import bestemmingsplankaart if self.clsBestemmingsplan.isChecked() is True: GIS_Raster = GIS2BIM_FreeCAD.CreateLayer("GIS_Raster") a = GIS2BIM.WMSRequest( GIS2BIM.GetWebServerData( "NL_INSPIRE_Ruimtelijke_Plannen_Totaal_28992", "webserverRequests", "serverrequestprefix"), Bbox, fileLocationWMS, 3000, 3000) ImageAerialPhoto = GIS2BIM_FreeCAD.ImportImage( fileLocationWMS, width, height, 1000, "Ruimtelijke Plannen", 0, 0) ImageAerialPhoto.addProperty("App::PropertyString", "WMSRequestURL") ImageAerialPhoto.WMSRequestURL = a[2] FreeCAD.activeDocument().getObject("GIS_Raster").addObject( FreeCAD.activeDocument().getObject(ImageAerialPhoto.Label)) FreeCAD.activeDocument().getObject("PDOK").addObject( FreeCAD.activeDocument().getObject("GIS_Raster")) FreeCAD.ActiveDocument.recompute() self.close()