예제 #1
0
파일: plot.py 프로젝트: hobama/V2V-OSM
def plot_streets_and_buildings(streets,
                               buildings=None,
                               show=True,
                               dpi=300,
                               path=None,
                               overwrite=False,
                               ruler=True,
                               axes=False):
    """ Plots streets and buildings"""

    fig, axi = ox.plot_graph(streets,
                             show=False,
                             close=False,
                             node_size=0,
                             dpi=dpi,
                             edge_color='#333333',
                             fig_height=6)

    # TODO: bug when plotting buildings, inner area not empty! (e.g. Stiftskaserne Wien Neubau)
    if buildings is not None:
        ox.plot_buildings(buildings,
                          fig=fig,
                          ax=axi,
                          set_bounds=False,
                          show=False,
                          close=False,
                          dpi=dpi,
                          color='#999999')

    # Reset axes parameters to default
    if axes:
        axes_color = '#999999'
        axi.axis('on')
        axi.margins(0.05)
        axi.tick_params(which='both', direction='out', colors=axes_color)
        axi.set_xlabel('X coordinate [m]', color=axes_color)
        axi.set_ylabel('Y coordinate [m]', color=axes_color)
        axi.spines['right'].set_color('none')
        axi.spines['top'].set_color('none')
        axi.spines['left'].set_color(axes_color)
        axi.spines['bottom'].set_color(axes_color)
        fig.canvas.draw()

    if ruler:
        plot_ruler(axi)

    if path is not None:
        if overwrite or not os.path.isfile(path):
            fig.savefig(path)

    if show:
        fig.show()

    return fig, axi
예제 #2
0
def make_plot(place,
              point,
              network_type='drive',
              bldg_color='orange',
              dpi=40,
              dist=805,
              default_width=4,
              street_widths=None):
    gdf = ox.buildings_from_point(point=point, distance=dist)
    gdf_proj = ox.project_gdf(gdf)
    fig, ax = ox.plot_figure_ground(point=point,
                                    dist=dist,
                                    network_type=network_type,
                                    default_width=default_width,
                                    street_widths=street_widths,
                                    save=False,
                                    show=False,
                                    close=True)
    fig, ax = ox.plot_buildings(gdf_proj,
                                fig=fig,
                                ax=ax,
                                color=bldg_color,
                                set_bounds=False,
                                save=True,
                                show=False,
                                close=True,
                                filename=place,
                                dpi=dpi)
예제 #3
0
파일: buildings.py 프로젝트: thomasgt/carto
def make_plot(place,
              point,
              network_type="drive",
              edge_color="#FFD500",
              bldg_color="#3B14AF",
              bg_colour="#082368",
              dpi=40,
              dist=805,
              default_width=4,
              street_widths=None):
    gdf = ox.buildings_from_point(point=point, distance=dist)
    gdf_proj = ox.project_gdf(gdf)
    fig, ax = ox.plot_figure_ground(point=point,
                                    dist=dist,
                                    network_type=network_type,
                                    default_width=default_width,
                                    street_widths=street_widths,
                                    edge_color=edge_color,
                                    bgcolor=bg_colour,
                                    save=False,
                                    show=False,
                                    close=True)
    fig, ax = ox.plot_buildings(gdf_proj,
                                fig=fig,
                                ax=ax,
                                color=bldg_color,
                                set_bounds=False,
                                save=True,
                                show=False,
                                close=True,
                                filename=place,
                                dpi=dpi)
예제 #4
0
def test_buildings():

    gdf = ox.buildings_from_place(place='Piedmont, California, USA')
    gdf = ox.buildings_from_address(address='San Francisco, California, USA', distance=300)
    fig, ax = ox.plot_buildings(gdf)
    
    
예제 #5
0
def test_buildings():

    # download building footprints and plot them
    gdf = ox.buildings_from_place(place='Emeryville, California, USA')
    gdf = ox.buildings_from_address(
        address='600 Montgomery St, San Francisco, California, USA',
        distance=300)
    fig, ax = ox.plot_buildings(gdf)
예제 #6
0
def test_buildings():

    with httmock.HTTMock(get_mock_response_content('overpass-response-1.json.gz')):
        gdf = ox.buildings_from_place(place='Piedmont, California, USA')

    with httmock.HTTMock(get_mock_response_content('overpass-response-2.json.gz')):
        gdf = ox.buildings_from_address(address='260 Stockton Street, San Francisco, California, USA', distance=300)

    fig, ax = ox.plot_buildings(gdf)
예제 #7
0
G2 = ox.graph_from_point(location_point,
                         distance=5000,
                         distance_type='bbox',
                         network_type='drive')
G2 = ox.project_graph(G2)
fig, ax = ox.plot_graph(G2, node_size=30, node_color='#66cc66')

import osmnx as ox, geopandas as gpd
ox.config(log_file=True, log_console=True, use_cache=True)
location_point = (-17.1010286, 145.7753749)
gdf = ox.buildings_from_point(point=location_point, distance=5000)
gdf_proj = ox.project_gdf(gdf)
bbox = ox.bbox_from_point(point=location_point,
                          distance=5000,
                          project_utm=True)
fig, ax = ox.plot_buildings(gdf_proj)

import osmnx as ox, geopandas as gpd
ox.config(log_file=True, log_console=True, use_cache=True)

place_names = ['Gordonvale, Queensland, Australia']
east_bay = ox.gdf_from_places(place_names)
ox.save_gdf_shapefile(east_bay)
east_bay = ox.project_gdf(east_bay)
fig, ax = ox.plot_shape(east_bay)

import osmnx as ox
ox.config(log_file=True, log_console=True, use_cache=True)
city = ox.gdf_from_place('Sydney, New South Wales, Australia')
city
ox.save_gdf_shapefile(city)
예제 #8
0
# Sean Wu
# July 19, 2017
# 
#==============================================================================
import osmnx as ox
from IPython.display import Image
%matplotlib inline

# import all movement paths
biokoGraph = ox.graph_from_place('Bioko', network_type='all')
ox.plot_graph(biokoGraph,fig_height=20)

# import buildings & save to .shp
biokoBldg = ox.buildings_from_place('Bioko')
biokoBldgProj = ox.project_gdf(biokoBldg)
ox.plot_buildings(gdf=biokoBldgProj,bgcolor='#333333',color='w',save=True, show=False, close=True, filename='biokoBldg', dpi=90)
Image('{}/{}.{}'.format('images', 'biokoBldg', 'png'), height=800, width=800)

biokoBldgShp = biokoBldg.drop(labels='nodes',axis=1)
biokoBldgShp.to_file('Desktop/BiokoBldg')

biokoAreas = biokoBldgProj.area

# basic analysis of road network
biokoGraphLength = ox.get_edge_colors_by_attr(biokoGraph, attr='length')
ox.plot_graph(biokoGraph, edge_color=biokoGraphLength,fig_height=30)


# helper funcion to get one-square-mile street networks, building footprints, and plot them
def make_plot(place, point, network_type='drive', bldg_color='orange', dpi=90,
              dist=805, default_width=4, street_widths=None):
예제 #9
0
Created on Thu Jul 27 15:32:11 2017

@author: yangjinyue
"""

import osmnx as ox
from IPython.display import Image
ox.config(log_file=True, log_console=True, use_cache=True)

img_folder = 'images'
extension = 'png'
size = 600

point = (35.691502, 139.703481)
dist = 2000
gdf = ox.buildings_from_point(point=point, distance=dist, retain_invalid=True)
gdf_proj = ox.project_gdf(gdf)
bbox = ox.bbox_from_point(point=point, distance=dist, project_utm=True)
fig, ax = ox.plot_buildings(gdf_proj,
                            bgcolor='#333333',
                            color='w',
                            figsize=(8, 8),
                            bbox=bbox,
                            save=True,
                            show=False,
                            close=True,
                            filename='paris_bldgs',
                            dpi=150)
Image('{}/{}.{}'.format(img_folder, 'paris_bldgs', extension),
      height=size,
      width=size)
예제 #10
0
# configure the image display
size = 256

# load buildings from about 1.5km² around UCL
point = (51.524498, -0.133874)
dist = 612
gdf = osmnx.buildings_from_point(point=point, distance=dist)

# preview image
gdf_proj = osmnx.project_gdf(gdf, to_crs={'init': 'epsg:3857'})
fig, ax = osmnx.plot_buildings(gdf_proj,
                               bgcolor='#333333',
                               color='w',
                               figsize=(4, 4),
                               save=True,
                               show=False,
                               close=True,
                               filename='test_buildings_preview',
                               dpi=600)

# save
test_dir = os.path.dirname(__file__)
test_data_geojson = str(os.path.join(test_dir, 'test_buildings.geojson'))
subprocess.run(["rm", test_data_geojson])

gdf_to_save = gdf_proj.reset_index()[['index', 'geometry']]

gdf_to_save.rename(columns={
    'index': 'fid'
}).to_file(test_data_geojson, driver='GeoJSON')
예제 #11
0
################################################################################
# OSMnx tests
# Playing around with OSMnx
# HMSC
################################################################################

#Load package #################
import osmnx as ox, geopandas as gpd
ox.config(log_file=True, log_console=True, use_cache=True)
# Parameters ##################
location_point = (-17.1010286, 145.7753749)  # Gordonvale
location_point = (-16, 8122246, 145.7183589)  # Yorkey's Knob
location_point = (-11.71654, 43.42988)  # Comoros
distance = 5000
# Roads #######################
G2 = ox.graph_from_point(location_point,
                         distance=5000,
                         distance_type='bbox',
                         network_type='drive')
G2 = ox.project_graph(G2)
#fig, ax = ox.plot_graph(G2, node_size=30, node_color='#66cc66')
# Buildings ###################
gdf = ox.buildings_from_point(point=location_point, distance=distance)
gdf_proj = ox.project_gdf(gdf)
bbox = ox.bbox_from_point(point=location_point,
                          distance=distance,
                          project_utm=True)
fig, ax = ox.plot_buildings(gdf_proj, show=True)
예제 #12
0
    def plot(self,
             x=None,
             size=9,
             name='temp_image',
             network_type='walk',
             dpi=90,
             default_width=5,
             street_widths=None):
        """        
        plot the map
        Parameters - x(model.x): default None, variables x after optimization
                     size(int) : default 9
                     name(string) : default 'temp_image', the saved image name
                     network_type(string) : default walk
                     dpi(int) : default 90
                     default_width(int) : default 5
                     street_widths(int) : default None
        """
        # default color set - before optimization
        ec = []
        for i in self.gdf.index:
            # white color for vacant houses
            if self.gdf['housetype'][i] == 2:
                ec.append('w')
            # yellow color for police station
            elif self.gdf['amenity'][i] == 'police':
                ec.append('yellow')
            # light green for curch
            elif self.gdf['amenity'][i] == 'place_of_worship':
                ec.append('#d7ff6e')
            # red color for non structure
            elif self.gdf['building'][i] != 'yes':
                ec.append('r')
            # #ff6060 for area > 398
            elif (pd.isnull(self.gdf['addr:street'][i]) and
                  self.gdf_proj.area[i] > 398) or self.gdf_proj.area[i] > 398:
                ec.append('#ff6060')
            # #8e8e8e for no address
            elif pd.isnull(self.gdf['addr:street'][i]):
                ec.append('#8e8e8e')
            # #ffcf77 for renter houses
            elif self.gdf['housetype'][i] == 0:
                ec.append('#ffcf77')
            # #ffcf77 for owner houses
            elif self.gdf['housetype'][i] == 1:
                ec.append('orange')
            # blue coloe fo o.w., which means the model is not correct
            else:
                ec.append('blue')

        # plot the original map before optimization
        if x == None:
            #ox.plot_buildings(self.gdf, figsize = (size,size) ,color = ec, bgcolor = "aliceblue")

            # get gdf_proj
            gdf_proj = ox.project_gdf(self.gdf)
            # initial figure ground
            fig, ax = ox.plot_figure_ground(address=self.address,
                                            dist=self.radius,
                                            network_type=network_type,
                                            default_width=default_width,
                                            bgcolor='#333333',
                                            edge_color='w',
                                            street_widths=street_widths,
                                            save=False,
                                            show=False,
                                            close=True,
                                            fig_length=size)
            # plot the building
            fig, ax = ox.plot_buildings(gdf_proj,
                                        fig=fig,
                                        ax=ax,
                                        color=ec,
                                        set_bounds=True,
                                        save=True,
                                        show=False,
                                        close=True,
                                        filename=name,
                                        dpi=dpi)
            # save image
            Image('{}/{}.{}'.format(img_folder, name, extension),
                  height=image_size,
                  width=image_size)

            return fig, ax

        # after optimization
        else:

            # update color set
            # if x == 1 or very close to 1 (tolerance)
            ec_after = [
                'mediumseagreen' if x[self.Houses[i]].X == 1.0
                or abs(x[self.Houses[i]].X - 1.0) < 0.000001 else ec[i]
                for i in xrange(len(self.Houses))
            ]

            # get gdf_proj
            gdf_proj = ox.project_gdf(self.gdf)
            # initial figure ground
            fig, ax = ox.plot_figure_ground(address=self.address,
                                            dist=self.radius,
                                            network_type=network_type,
                                            default_width=default_width,
                                            bgcolor='#333333',
                                            edge_color='w',
                                            street_widths=street_widths,
                                            save=False,
                                            show=False,
                                            close=True,
                                            fig_length=size)
            # plot the building
            fig, ax = ox.plot_buildings(gdf_proj,
                                        fig=fig,
                                        ax=ax,
                                        color=ec_after,
                                        set_bounds=True,
                                        save=True,
                                        show=False,
                                        close=True,
                                        filename=name,
                                        dpi=dpi)
            # save image
            Image('{}/{}.{}'.format(img_folder, name, extension),
                  height=image_size,
                  width=image_size)

            return fig, ax