Page 785 - NGTU_paper_withoutVideo
P. 785

کیتاموئژ نیون یاهدربراک و اه یروآ نف یلم سنارفنک

                              geom = GEOSGeometry(p, srid=4326)
                              geomobj = drawing(geom=geom)
                              geomobj.save()
                              geomobj.userOwner.add(user)
                      return HttpResponse("200OK", content_type='text/html')
                  else:
                      return HttpResponse("Access Denied. Eror403", content_type='text/html')
                                                                           :    تاميسرت  زا     shapefile  یجورخ   تيلباق   ندوزفا

                   هب  طوبرم   عبات   views.py  تمسق      رد  سپس .  دوش   لصتم 1   exportSHP    عبات      ات   هب  مینک یم    هفاضا    ار    رظن دروم دک   urls.py  تمسق   رد
                                                                                        .    مینک یم   فیرعت  ار    exportSHP

              def exportSHP(request):
                  if request.user.is_authenticated():
                      user = User.objects.get(id=request.user.id)
                      drawingForUser = drawing.objects.filter(userOwner=user)

                      directory_for_files = str(uuid.uuid4())
                      os.mkdir(directory_for_files)

                      #create shapefiles from geo
                      driverName = "ESRI Shapefile".encode('utf-8')
                      driver = ogr.GetDriverByName(driverName)
                      data_source1 = driver.CreateDataSource(directory_for_files+"/point.shp".encode('utf-8'))
                      data_source2 = driver.CreateDataSource(directory_for_files+"/linestring.shp".encode('utf-8'))
                      data_source3 = driver.CreateDataSource(directory_for_files+"/polygon.shp".encode('utf-8'))

                      srs = osr.SpatialReference()
                      srs.ImportFromEPSG(4326)

                      layer1 = data_source1.CreateLayer("volcanoes".encode('utf-8'), srs, ogr.wkbPoint)
                      layer2 = data_source2.CreateLayer("volcanoes".encode('utf-8'), srs, ogr.wkbLineString)
                      layer3 = data_source3.CreateLayer("volcanoes".encode('utf-8'), srs, ogr.wkbPolygon)

                      geoms = drawingForUser.values_list("geom",flat=True)
                      for geom in geoms:
                          feature = ogr.Feature(layer1.GetLayerDefn())

                          if geom.geom_type == "Point":
                              point = ogr.CreateGeometryFromWkt(geom.wkt)
                              feature.SetGeometry(point)
                              layer1.CreateFeature(feature)
                          elif geom.geom_type == "LineString":
                              linestring = ogr.CreateGeometryFromWkt(geom.wkt)
                              feature.SetGeometry(linestring)
                              layer2.CreateFeature(feature)
                          else:
                              polygon = ogr.CreateGeometryFromWkt(geom.wkt)
                              feature.SetGeometry(polygon)
                              layer3.CreateFeature(feature)
                      data_source1 = data_source2 = feature = point = polygon = linestring = data_source3 = layer1 = layer2 = layer3 =
              None

                          # create zip from directory with same name


              1  FtFcaeuF
   780   781   782   783   784   785   786   787   788   789   790