def test_distance_query(self): row1 = self.ds.resource.get_row(1, geometry_format='wkt') row2 = self.ds.resource.get_row(2, geometry_format='wkt') g1 = geom_from_wkt(row1['GEOMETRY']) g2 = geom_from_wkt(row2['GEOMETRY']).centroid min_d = g2.distance(g1) should_be_row1 = self.ds.resource.query( geometry_operator='distance:ge:-1:{d}:{wkt}'.format(d=min_d, wkt=g2.wkt), objectid__eq=row1['objectid'], ) objects = self.ds.resource.query( geometry_operator='distance:ge:-1:{d}:{wkt}'.format(d=min_d, wkt=g2.wkt)) self.assertEqual( len(should_be_row1), 1, msg='limited query should have returned one row, returned {n}'. format(n=len(should_be_row1))) self.assertEqual( should_be_row1[0]['objectid'], 1, msg='limited query should have returned FID 1, returned {n}'. format(n=should_be_row1[0]['objectid'])) self.assertGreaterEqual( len(objects), 1, msg= 'unlimited query returned only one object. should have returned several' )
def build_data_set(self, feature, **kwargs): multipoint = feature.GetGeometryRef() point = multipoint.GetGeometryRef(0) shapely_point = geom_from_wkt( point.ExportToWkt()).representative_point() ewkt = shape.from_shape(shapely_point, srid=4326) start_date = self.mappings['start_date'].get('value') or \ feature.GetField(self.mappings['start_date']['key']) end_date = self.mappings['end_date'].get('value') or \ feature.GetField(self.mappings['end_date']['key']) return { "start_date": start_date, "end_date": end_date, "location": ewkt, "class_id": self.storager.samples_map_id[feature.GetField(self.class_name)], "user_id": self.user }
def test_distance_query(self): row1 = self.ds.resource.get_row(1, geometry_format='wkt') row2 = self.ds.resource.get_row(2, geometry_format='wkt') g1 = geom_from_wkt(row1['GEOMETRY']) g2 = geom_from_wkt(row2['GEOMETRY']).centroid min_d = g2.distance(g1) should_be_row1 = self.ds.resource.query( geometry_operator='distance:ge:-1:{d}:{wkt}'.format(d=min_d, wkt=g2.wkt), objectid__eq=row1['objectid'], ) objects = self.ds.resource.query( geometry_operator='distance:ge:-1:{d}:{wkt}'.format(d=min_d, wkt=g2.wkt) ) self.assertEqual(len(should_be_row1), 1, msg='limited query should have returned one row, returned {n}'.format(n=len(should_be_row1))) self.assertEqual(should_be_row1[0]['objectid'], 1, msg='limited query should have returned FID 1, returned {n}'.format(n=should_be_row1[0]['objectid'])) self.assertGreaterEqual(len(objects), 1, msg='unlimited query returned only one object. should have returned several')
def test_mbr_query(self): row = self.ds.resource.get_row(1, geometry_format='wkt') geom = geom_from_wkt(row['GEOMETRY']) box = geom.bounds box_only = self.ds.resource.query(query_mbr=box) self.assertGreaterEqual(len(box_only), 1, msg='no results from the following query: {box}'.format(box=box)) exact_record = self.ds.resource.query(query_mbr=box, objectid__eq=row['objectid']) self.assertEqual(len(exact_record), 1, msg='exact record query returned {n} records'.format(n=len(exact_record))) self.assertEqual(exact_record[0]['objectid'], row['objectid'], msg='exact record query returned the wrong record {n}'.format(n=exact_record[0]['objectid']))
def test_mbr_query(self): row = self.ds.resource.get_row(1, geometry_format='wkt') geom = geom_from_wkt(row['GEOMETRY']) box = geom.bounds box_only = self.ds.resource.query(query_mbr=box) self.assertGreaterEqual( len(box_only), 1, msg='no results from the following query: {box}'.format(box=box)) exact_record = self.ds.resource.query(query_mbr=box, objectid__eq=row['objectid']) self.assertEqual(len(exact_record), 1, msg='exact record query returned {n} records'.format( n=len(exact_record))) self.assertEqual( exact_record[0]['objectid'], row['objectid'], msg='exact record query returned the wrong record {n}'.format( n=exact_record[0]['objectid']))
def download_contributions(file_format='shp'): if file_format != 'shp': abort(404) txt_accuracy_map = {'=': '=', '≅': '~', '≥': '>'} with tempfile.TemporaryDirectory() as tmpdirname: bname = 'laevus' shpname = os.path.join(tmpdirname, '{0}.shp'.format(bname)) zipname = os.path.join(tmpdirname, '{0}.zip'.format(bname)) schema = { 'geometry': 'Point', 'properties': { 'id': 'int', 'date': 'date', 'time': 'str', 'group_name': 'str', 'taxref_id': 'int', 'sci_name': 'str', 'cnames': 'str', 'accuracy': 'str', 'count': 'int', 'is_alive': 'str:1', 'comments': 'str', 'first_name': 'str', 'surname': 'str', 'email': 'str', } } rows = db.engine.execute('select * from full_report') with fiona.open(shpname, 'w', driver='ESRI Shapefile', encoding='utf-8', schema=schema, crs=from_epsg(2154)) as shp: for row in rows: shp.write({ 'geometry': mapping(geom_from_wkt(row.geometry)), 'properties': { 'id': row.id, 'date': row.date_time.strftime('%Y-%m-%d'), 'time': row.date_time.strftime('%H:%M'), 'group_name': row.group_name, 'taxref_id': row.taxref_id, 'sci_name': row.scientific_name, 'cnames': row.common_names, 'accuracy': txt_accuracy_map[row.count_accuracy], 'count': row.count, 'is_alive': row.is_alive, 'comments': row.comments, 'first_name': row.first_name, 'surname': row.surname, 'email': row.email, } }) with zipfile.ZipFile(zipname, 'w') as shpzip: for fname in glob.glob('{0}.*'.format( os.path.join(tmpdirname, bname))): if not fname.endswith('.zip'): shpzip.write(fname, arcname=os.path.basename(fname)) with open(zipname, 'rb') as shpzip: resp = make_response(shpzip.read()) resp.headers['Content-Type'], resp.headers[ 'Content-Encoding'] = mimetypes.guess_type(zipname) resp.headers['Content-Disposition'] = ('attachment; ' 'filename={0}'.format( os.path.basename(zipname))) return resp
#may be to delete ? layer_to.setCoordinateSystem() layer_to2.setCoordinateSystem() layer_to.startEditing() layer_to2.startEditing() iter = layer_from.getFeatures() for feature in iter: geom = feature.geometry() print feature["Comment"] if int(feature["idLineType"])==1: wkt = geom.exportToWkt() line = swkt.geom_from_wkt(wkt) cur.execute('SELECT "InCableN", "idFiber", "idCable", "bgFiber"."idColor", "ColorName" \ FROM "bgFiber" INNER JOIN "bgGroup" ON "bgFiber"."idGroup"="bgGroup"."idGroup" \ INNER JOIN "bgColor" ON "bgFiber"."idColor"="bgColor"."idColor" \ WHERE "bgGroup"."idCable"= %s', [feature["idCable"]]) rows = cur.fetchall() for row in rows: #print " ", row shift = (int(row['InCableN'])-1)*0.000001 if feature["idLineType"]==1: line2 = line.parallel_offset(shift, feature["left_right"], join_style=2) wkt = line2.to_wkt() newgeom = QgsGeometry.fromWkt(wkt) else: