Beispiel #1
0
    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'
        )
Beispiel #2
0
    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']))
Beispiel #5
0
    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']))
Beispiel #6
0
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: