def test_count():
    featureset1 = json2ogr(INTERSECT_BASE_GEOJSON)
    featureset2 = json2ogr(INTERSECT_MULTIPLE_FEATURES)

    intersection = intersect(featureset1, featureset2)
    assert len(intersection['features']) == 2

    count = get_intersect_count(intersection, 'id')
    assert count == 3
Example #2
0
def test_successful_intersection():

    featureset1 = json2ogr(INTERSECT_PARTIALLY_WITHIN_GEOJSON)
    featureset2 = json2ogr(INTERSECT_BASE_GEOJSON)

    result_featureset = intersect(featureset1, featureset2)
    assert len(result_featureset['features']) == 1
    assert isinstance(result_featureset['features'][0]['geometry'],
                      MultiPolygon)
def test_area_percent_no_categories():
    featureset1 = json2ogr(INTERSECT_PARTIALLY_WITHIN_GEOJSON)
    featureset2 = json2ogr(INTERSECT_BASE_GEOJSON)

    result_featureset = intersect(featureset1, featureset2)
    assert len(result_featureset['features']) == 1

    pct_overlap = get_intersect_area_percent(featureset1, result_featureset)
    assert isinstance(pct_overlap, float)
    assert pct_overlap > 0 and pct_overlap <= 100
def test_z_scores():
    featureset1 = json2ogr(INTERSECT_BASE_GEOJSON)
    featureset2 = json2ogr(INTERSECT_MULTIPLE_FEATURES)

    intersection = intersect(featureset1, featureset2)
    assert len(intersection['features']) == 2

    scores = get_intersect_z_scores(intersection, 'id', 'value')
    assert len(scores) == 2
    assert 1 in scores.keys() and 2 in scores.keys()
    assert isinstance(scores[1], float)
def test_area_percent_no_categories_fail():
    featureset1 = json2ogr(INTERSECT_BASE_GEOJSON)
    featureset2 = json2ogr(INTERSECT_MULTIPLE_FEATURES)

    intersection = intersect(featureset1, featureset2)
    assert len(intersection['features']) == 2
    field_vals = [f['properties']['id'] for f in intersection['features']]
    assert len(field_vals) == len(set(field_vals))

    try:
        pct_overlap = get_intersect_area_percent(featureset1,
                                                 intersection,
                                                 category='id')
    except ValueError as e:
        assert str(e) == 'Intersected area must be dissolved to a single \
Example #6
0
def test_ogr2json():

    geom_converted_version = json2ogr(DISSOLVE_GEOJSON)
    geom_converted_back = ogr2json(geom_converted_version)

    for i, f in enumerate(json.loads(geom_converted_back)['features']):
        assert isinstance(f['geometry'], dict)
Example #7
0
def test_maintain_crs():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    geom_diss = dissolve(featureset, field='str_value')
    assert len(geom_diss['features']) == 2
    assert 'crs' in geom_diss.keys()
def test_area_stats_with_categories():
    featureset1 = json2ogr(INTERSECT_BASE_GEOJSON)
    featureset2 = json2ogr(INTERSECT_MULTIPLE_FEATURES)

    intersection = intersect(featureset1, featureset2)
    assert len(intersection['features']) == 2
    field_vals = [f['properties']['id'] for f in intersection['features']]
    assert len(field_vals) == len(set(field_vals))

    pct_overlap = get_intersect_area_percent(featureset1,
                                             intersection,
                                             category='id')
    assert isinstance(pct_overlap, dict)
    assert len(pct_overlap.keys()) == 2
    for val in pct_overlap.keys():
        assert pct_overlap[val] > 0 and pct_overlap[val] <= 100
def test_not_projected_buffer():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    try:
        geom_buffered = buffer_to_dist(featureset, 10)
    except ValueError as e:
        assert str(e) == 'geometries must be projected with the World \
Example #10
0
def test_json2ogr():
    geom_converted_version = json2ogr(DISSOLVE_GEOJSON)

    assert isinstance(geom_converted_version, dict)
    assert 'features' in geom_converted_version.keys()

    for f in geom_converted_version['features']:
        assert isinstance(f['geometry'], Polygon)
Example #11
0
def test_not_projected_buffer():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    try:
        geom_buffered = buffer_to_dist(featureset, 10)
    except ValueError as e:
        assert str(e) == ('geometries must be projected with the World ' +
                          'Azimuthal Equidistant coordinate system')
Example #12
0
def test_project_already_projected():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    geom_projected1 = project_local(featureset)
    try:
        geom_projected2 = project_local(geom_projected1)
    except ValueError as e:
        assert str(e) == 'geometries have already been projected with the \
Example #13
0
def test_area_percent_no_categories():
    featureset1 = json2ogr(INTERSECT_PARTIALLY_WITHIN_GEOJSON)
    for i,f in enumerate(featureset1['features']):
        f['properties']['id'] = i
    featureset2 = json2ogr(INTERSECT_BASE_GEOJSON)

    result_featureset = intersect(featureset1, featureset2)
    assert len(result_featureset['features']) == 1

    featureset1_projected = project_local(featureset1)
    result_projected = project_local(result_featureset)

    aoi_area = get_area(featureset1_projected)
    area_pct = get_area_percent(result_projected, aoi_area)

    assert area_pct
    assert isinstance(area_pct, float)
    assert area_pct > 0 and area_pct <=100
def test_project():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    geom_projected = project_local(featureset)
    assert isinstance(geom_projected, dict)
    assert 'features' in geom_projected.keys()
    assert (geom_projected['crs']['properties']['name'] ==
            'urn:ogc:def:uom:EPSG::9102')
    assert (featureset['crs']['properties']['name'] !=
            'urn:ogc:def:uom:EPSG::9102')
Example #15
0
def test_projected_buffer():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    geom_projected = project_local(featureset)
    geom_buffered = buffer_to_dist(geom_projected, 10)
    assert isinstance(geom_buffered, dict)
    assert 'features' in geom_buffered.keys()
    assert len(geom_buffered['features']) == 4

    for f_in, f_out in zip(featureset['features'], geom_buffered['features']):
        assert f_out['geometry'].area > f_in['geometry'].area
Example #16
0
def test_area_percent_with_categories():
    featureset1 = json2ogr(INTERSECT_BASE_GEOJSON)
    for i,f in enumerate(featureset1['features']):
        f['properties']['id'] = i
    featureset2 = json2ogr(INTERSECT_MULTIPLE_FEATURES)

    result_featureset = intersect(featureset1, featureset2)
    assert len(result_featureset['features']) == 2
    field_vals = [f['properties']['value'] for f in result_featureset['features']]
    assert len(field_vals) == len(set(field_vals))

    featureset1_projected = project_local(featureset1)
    result_projected = project_local(result_featureset)

    aoi_area = get_area(featureset1_projected, 'id')
    area_pct = get_area_percent(result_projected, aoi_area, 'id', 'value')

    assert area_pct
    assert isinstance(area_pct, dict)
    for area_pct_cats in area_pct.values():
        assert isinstance(area_pct_cats, dict)
        for val in area_pct_cats.values():
            assert isinstance(val, float)
            assert val > 0 and val <=100
Example #17
0
def test_successfully_dissolve_no_field_arg():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    geom_diss = dissolve(featureset)
    assert len(geom_diss['features']) == 1
Example #18
0
def test_successfully_dissolve_decimal_field():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    assert len(featureset['features']) == 4

    geom_diss = dissolve(featureset, field='dec_value')
    assert len(geom_diss['features']) == 2
Example #19
0
def test_successfully_index_featureset():
    featureset = json2ogr(DISSOLVE_GEOJSON)
    index = index_featureset(featureset)
    assert isinstance(index, rtree.index.Index)