From 112328b917366b297c408aa42594b5b048e40b38 Mon Sep 17 00:00:00 2001 From: Roy Hyunjin Han Date: Thu, 15 Feb 2018 13:30:53 -0500 Subject: [PATCH] Use (longitude, latitude) coordinate order for WKT --- datasets/leona-selected-grid-mv-lines.csv | 6 +++--- infrastructure_planning/electricity/report.py | 10 +++++----- infrastructure_planning/macros.py | 8 +++----- infrastructure_planning/parsers.py | 4 ---- infrastructure_planning/preprocessors.py | 6 +++--- 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/datasets/leona-selected-grid-mv-lines.csv b/datasets/leona-selected-grid-mv-lines.csv index 8c8f9cb..de03a2d 100644 --- a/datasets/leona-selected-grid-mv-lines.csv +++ b/datasets/leona-selected-grid-mv-lines.csv @@ -1,4 +1,4 @@ WKT -"LINESTRING (15.7230180309079 -16.5240428342476, 15.7204712822643 -16.45979485215119)" -"LINESTRING (15.7204712822643 -16.45979485215119, 15.6990162260261 -16.39475446682649)" -"LINESTRING (15.6990162260261 -16.39475446682649, 15.67694993024816 -16.36668175282426)" +"LINESTRING (-16.5240428342476 15.7230180309079, -16.45979485215119 15.7204712822643)" +"LINESTRING (-16.45979485215119 15.7204712822643, -16.39475446682649 15.6990162260261)" +"LINESTRING (-16.39475446682649 15.6990162260261, -16.36668175282426 15.67694993024816)" diff --git a/infrastructure_planning/electricity/report.py b/infrastructure_planning/electricity/report.py index a7578ba..0bb09d3 100644 --- a/infrastructure_planning/electricity/report.py +++ b/infrastructure_planning/electricity/report.py @@ -392,9 +392,9 @@ def save_total_lines( node1_d, node2_d = order_nodes(node1_d, node2_d, edge_order) wkt = LineString([( - node1_d['latitude'], node1_d['longitude'], + node1_d['longitude'], node1_d['latitude'], ), ( - node2_d['latitude'], node2_d['longitude'], + node2_d['longitude'], node2_d['latitude'], )]).wkt rows.append([line_length, discounted_cost, edge_order, wkt]) properties_folder = make_folder(join(target_folder, 'properties')) @@ -535,7 +535,7 @@ def save_total_map( 'Proposed MV Line Length (m)': node_d.get( 'grid_mv_line_adjusted_length_in_meters'), 'Levelized Cost Per kWh Consumed': levelized_cost, - 'WKT': Point(latitude, longitude).wkt, + 'WKT': Point(longitude, latitude).wkt, 'FillColor': color_by_technology[technology], 'RadiusInPixelsRange5-10': node_d['peak_demand_in_kw'], }) @@ -552,8 +552,8 @@ def save_total_map( node2_d['peak_demand_in_kw']) line_length = edge_d['grid_mv_line_adjusted_length_in_meters'] geometry_wkt = LineString([ - (node1_d['latitude'], node1_d['longitude']), - (node2_d['latitude'], node2_d['longitude'])]).wkt + (node1_d['longitude'], node1_d['latitude']), + (node2_d['longitude'], node2_d['latitude'])]).wkt rows.append({ 'Name': name, 'Peak Demand (kW)': peak_demand, diff --git a/infrastructure_planning/macros.py b/infrastructure_planning/macros.py index 17b3ff1..6698a85 100644 --- a/infrastructure_planning/macros.py +++ b/infrastructure_planning/macros.py @@ -10,7 +10,6 @@ from invisibleroads_macros.disk import ( make_enumerated_folder_for, make_folder, remove_safely, replace_file_extension) -from invisibleroads_macros.geometry import flip_xy, transform_geometries from invisibleroads_macros.iterable import merge_dictionaries, sort_dictionary from invisibleroads_macros.table import normalize_key from networkx import Graph, write_gpickle @@ -133,18 +132,17 @@ def run(main_functions, g): g.update(compute(f, g)) continue for node_id, node_d in g['infrastructure_graph'].cycle_nodes(): - l = merge_dictionaries(node_d, { + v = merge_dictionaries(node_d, { 'node_id': node_id, 'local_overrides': dict(g['demand_point_table'].ix[node_id])}) - node_d.update(compute(f, l, g)) + node_d.update(compute(f, v, g)) return g def save_shapefile(target_path, geotable): if 'wkt' in geotable: - geometries = [wkt.loads(x) for x in geotable['wkt']] # Shapefiles expect (x, y) or (longitude, latitude) coordinate order - geometries = transform_geometries(geometries, flip_xy) + geometries = [wkt.loads(x) for x in geotable['wkt']] else: xys = geotable[['longitude', 'latitude']].values geometries = [Point(xy) for xy in xys] diff --git a/infrastructure_planning/parsers.py b/infrastructure_planning/parsers.py index 2e985dd..4d24f4c 100644 --- a/infrastructure_planning/parsers.py +++ b/infrastructure_planning/parsers.py @@ -1,6 +1,5 @@ import geometryIO import re -from invisibleroads_macros.geometry import flip_xy, transform_geometries from invisibleroads_macros.iterable import merge_dictionaries from pandas import DataFrame, read_csv @@ -47,10 +46,7 @@ def load_geotable(path): elif path.endswith('.zip'): proj4, geometries, fields, definitions = geometryIO.load(path) normalize_geometry = geometryIO.get_transformGeometry(proj4) - # Convert to (longitude, latitude) geometries = [normalize_geometry(x) for x in geometries] - # Convert to (latitude, longitude) - geometries = transform_geometries(geometries, flip_xy) table = DataFrame(fields, columns=[x[0] for x in definitions]) table['WKT'] = [x.wkt for x in geometries] else: diff --git a/infrastructure_planning/preprocessors.py b/infrastructure_planning/preprocessors.py index b7d679c..cfcd635 100644 --- a/infrastructure_planning/preprocessors.py +++ b/infrastructure_planning/preprocessors.py @@ -74,7 +74,7 @@ def normalize_solar_mini_grid_panel_table(solar_mini_grid_panel_table): def normalize_grid_mv_line_geotable(grid_mv_line_geotable, demand_point_table): - 'Make sure that grid mv lines use (latitude, longitude) coordinate order' + 'Make sure that grid mv lines use (longitude, latitude) coordinate order' raw_geometries = [wkt.loads(x) for x in grid_mv_line_geotable['wkt']] # Remove incompatible geometries geometries, xs = [], [] @@ -93,10 +93,10 @@ def normalize_grid_mv_line_geotable(grid_mv_line_geotable, demand_point_table): if geometries: regular = tuple(GeometryCollection(geometries).centroid.coords[0])[:2] flipped = regular[1], regular[0] - reference = tuple(demand_point_table[['latitude', 'longitude']].mean()) + reference = tuple(demand_point_table[['longitude', 'latitude']].mean()) # If the flipped coordinates are closer, if get_distance(reference, flipped) < get_distance(reference, regular): - # Flip coordinates to get (latitude, longitude) coordinate order + # Flip coordinates to get (longitude, latitude) coordinate order geometries = transform_geometries(geometries, flip_xy) grid_mv_line_geotable['wkt'] = [x.wkt for x in geometries] return {'grid_mv_line_geotable': grid_mv_line_geotable}