コード例 #1
0
ファイル: __init__.py プロジェクト: cclauss/mf-next
 def geom_filter(cls, geometry, geometryType, imageDisplay, mapExtent, tolerance):
     myFilter = None
     tolerance = tolerance*0.0254
     scale = getScale(imageDisplay, mapExtent)
     if scale is None or (scale >= cls.__minscale__ and scale <= cls.__maxscale__): 
         geom = esriRest2Shapely(geometry, geometryType)
         wkb_geometry = WKBSpatialElement(buffer(geom.wkb), 21781)
         geom_column = cls.geometry_column()
         myFilter = functions.within_distance(geom_column, wkb_geometry, tolerance)
     return myFilter
コード例 #2
0
ファイル: __init__.py プロジェクト: gjn/mf-chsdi
 def bbox_filter(cls, scale, bbox, tolerance=0):
     myFilter = None
     if scale is None or (scale >= cls.__minscale__ and scale <= cls.__maxscale__):
         geom = Polygon(((bbox[0], bbox[1]), (bbox[0], bbox[3]),
                         (bbox[2], bbox[3]), (bbox[2], bbox[1]),
                         (bbox[0], bbox[1])))
         wkb_geometry = WKBSpatialElement(buffer(geom.wkb), 21781)
         geom_column = cls.__table__.columns['the_geom']
         myFilter = functions.within_distance(geom_column, wkb_geometry, tolerance)
     return myFilter
コード例 #3
0
ファイル: __init__.py プロジェクト: ponceta/mf-chsdi3
 def geom_filter(cls, geometry, geometryType, imageDisplay, mapExtent, tolerance):
     toleranceMeters = getToleranceMeters(imageDisplay, mapExtent, tolerance)
     scale = None
     minScale = cls.__minscale__ if hasattr(cls, '__minscale__') else None
     maxScale = cls.__maxscale__ if hasattr(cls, '__maxscale__') else None
     if minScale is not None and maxScale is not None and toleranceMeters != 0.0:
         scale = getScale(imageDisplay, mapExtent)
     if scale is None or (scale > cls.__minscale__ and scale <= cls.__maxscale__):
         geom = esriRest2Shapely(geometry, geometryType)
         wkbGeometry = WKBSpatialElement(buffer(geom.wkb), 21781)
         geomColumn = cls.geometry_column()
         geomFilter = functions.within_distance(geomColumn, wkbGeometry, toleranceMeters)
         return geomFilter
     return None
コード例 #4
0
ファイル: search.py プロジェクト: kurtraschke/cadors-parse
def search_location():
    latitude = request.args['latitude']
    longitude = request.args['longitude']
    radius = int(request.args['radius'])
    primary = True if (request.args['primary'] == 'primary') else False
    page = int(request.args.get('page', '1'))
    format = request.args.get('format', 'html')

    radius_m = radius * 1000

    wkt = "POINT(%s %s)" % (longitude, latitude)
    location = WKTSpatialElement(wkt)

    loc = sql.cast(LocationBase.location, Geography)
    q_loc = sql.cast(location, Geography)

    query = CadorsReport.query.join(LocationRef).join(LocationBase).filter(
        functions.within_distance(loc, q_loc, radius_m))

    if primary:
        query = query.filter(LocationRef.primary == True)

    if format == 'html':
        query = query.add_column(functions.distance(loc, q_loc).label('distance'))
        query = query.add_column(
            func.ST_Azimuth(location,
                            LocationBase.location.RAW) * (180/func.pi()))
        query = query.add_column(LocationBase.name)
        query = query.order_by('distance ASC',
                               CadorsReport.timestamp.desc())
        pagination = query.paginate(page)

        response = make_response(
            render_template('sr_loc.html',
                            reports=pagination.items, pagination=pagination,
                            get_direction=get_direction, radius=radius,
                            latitude=latitude, longitude=longitude))
        return prepare_response(response, 300)
    else:
        pagination = query.paginate(page)
        title = "Events within %s km of %s, %s" % (radius, latitude,
                                                   longitude)
        return render_list(pagination, title, format)
コード例 #5
0
ファイル: swisssearch.py プロジェクト: gjn/mf-chsdi
 def within_filter(cls, lon, lat, column, tolerance=0):
     geom = Point(lon, lat)
     wkb_geometry = WKBSpatialElement(buffer(geom.wkb), 21781)
     geom_column = cls.__table__.columns.get(column)
     return functions.within_distance(geom_column, wkb_geometry, tolerance)