Commands¶
General information¶
Most of the commands require access to PostgreSQL/PostGIS. For this reason we
recommend setting the DATABASE_URL
environment variable, even though it is
possible to specify it on the CLI. This will keep the commands shorter and
reduce the chance of error in the connection URL.
Not all the CLI flags will be described on this page. For more details, please
refer to the help screens by using the --help
flag associated with the command
to review.
All the commands follow a very similar pattern, therefore they use almost all the same parameters accross the board.
Environment variables¶
DATABASE_URL: Define the connection URL to the database.
For instance:
postgresql://postgres:postgres@localhost:5432/postgres
.BNA_OSMNX_CACHE: Set it to 0 to disable the OSMNX cache.
This is useful when used in an ephemeral environment where there is no real benefit of caching the downloads.
Configure¶
Configure is a helper command, in the sense that it is completely optional to the process, but may help to configure the PostgreSQL which will be used for the analysis.
The most common use case is to configure a PostgreSQL instance which is running in a Docker container (via the Docker Compose file that we provide for instance). To do so, simply run:
bna configure docker
The command will autodetect the number of cores and the memory allocated to the Docker daemon, and will use this information to determine the optimal values to use to configure the PostgreSQL instance.
If for some reason a more fine grained configuration is prefered, another command is provided where the user has to specify the information manually:
bna configure custom 4 4096 pguser
The parameters are:
the number of cores to allocate
the amount of memory to allocate, in MB
the name of the PostgreSQL user to connect as
Prepare¶
This command prepares all the input files required for an analysis.
Usage: bna prepare all [OPTIONS] COUNTRY CITY [STATE] [FIPS_CODE]
For US cities, the full name of the state as well as the city FIPS code are required:
bna prepare all usa "santa rosa" "new mexico" 3570670
For non US cities, only the name and the country are required:
bna prepare all malta valletta
However, specifying a region can speed up the process since it will reduce the
size of the map to download. For instance this command will download the map of
the province of Québec in Canada. If québec
was omitted, it would download the
map of the full country instead.
bna prepare all canada "ancienne-lorette" québec
For non US cities, the FIPS code is always ignored.
By default the files will be saved in their own sub-directory in the ./data
directory, relative to where the command was executed. This can be changed with
the --output-dir
option flag.
For the 3 previous examples, the files will be located in:
data
├── ancienne-lorette-quebec-canada
├── santa-rosa-new-mexico-usa
└── valletta-malta
All of this should already be enough to gather the information required to perform an analysis, but a few more knobs are available to override the default values:
–speed-limit: overrides the city speed limit.
–block-size: defines the size of a synthetic block (only used for non US cities)
–block-population: defines the population of a synthetic block (only used for non US cities)
–census-year: year to use to retrieve US census data (only used for US cities)
Import¶
This command imports all files from the prepare
command into the database.
The sub-command which is the most commonly used is all
, but in case of
exploration, a particular type of import can be specified: jobs
,
neighborhood
and osm
.
Since they all work the same way, only the all
sub-command will be described
below.
All¶
Usage: bna import all [OPTIONS] COUNTRY CITY [STATE] [FIPS_CODE]
Same conditions as before, country
and city
arguments are mandatory, while
the region
and the FIPS
code are required only for US cities.
Attention
The same parameters as for the prepare
command must be used to
guarantee correct results.
In addition to these parameters, the directory where the input files were stored
is also required and must be specified with the --input-dir
option flag.
bna import all usa "santa rosa" "new mexico" 3570670 --input-dir data/santa-rosa-new-mexico-usa
Compute¶
This is the command which actually computes the numbers.
Usage: bna compute [OPTIONS] COUNTRY CITY [STATE]
Attention
The same parameters as for the prepare
command must be used to
guarantee correct results.
In addition to these parameters, the directory where the files were stored is
also required and must be specified with the --input-dir
option flag.
bna compute usa "santa rosa" "new mexico" --input-dir data/santa-rosa-new-mexico-usa
All the results will be stored in various table in the database.
Export¶
This command exports the tables from the database.
Several exporters are available to export the results that where previously computed.
The following files will be created from the PostgreSQL tables:
.
├── neighborhood_census_blocks.cpg
├── neighborhood_census_blocks.dbf
├── neighborhood_census_blocks.geojson
├── neighborhood_census_blocks.prj
├── neighborhood_census_blocks.shp
├── neighborhood_census_blocks.shx
├── neighborhood_colleges.geojson
├── neighborhood_community_centers.geojson
├── neighborhood_connected_census_blocks.csv
├── neighborhood_dentists.geojson
├── neighborhood_doctors.geojson
├── neighborhood_hospitals.geojson
├── neighborhood_overall_scores.csv
├── neighborhood_parks.geojson
├── neighborhood_pharmacies.geojson
├── neighborhood_retail.geojson
├── neighborhood_schools.geojson
├── neighborhood_score_inputs.csv
├── neighborhood_social_services.geojson
├── neighborhood_supermarkets.geojson
├── neighborhood_transit.geojson
├── neighborhood_universities.geojson
├── neighborhood_ways.cpg
├── neighborhood_ways.dbf
├── neighborhood_ways.prj
├── neighborhood_ways.shp
├── neighborhood_ways.shx
└── residential_speed_limit.csv
local-custom¶
This sub-command exports the results to a local directory.
Usage: bna export local [OPTIONS] EXPORT_DIR
Example:
bna export local ~/bna/santa-rosa-new-mexico-usa
The directories will be created if they do not exist.
local¶
This sub-command exports the results to a local directory created based on the PeopleForBikes convention and calver versioning.
Usage: bna export local-calver [OPTIONS] COUNTRY CITY [REGION] [EXPORT_DIR]
The calver scheme used here is YY.MINOR[.MICRO]
,
similar to what pip, the official package
manager for Python uses.
bna export local-calver usa "santa rosa" "new mexico"
The final directory structure follows the PeopleForBikes convention
<output_dir>/<country>/<region>/<city>/<calver>
and the structure will look
like this:
results
└── usa
└── new mexico
└── santa rosa
└── 23.9
└── ...
S3¶
This sub-command exports the result to an AWS S3 bucket, respecting the calver representation.
Usage: bna export s3 [OPTIONS] BUCKET_NAME COUNTRY CITY [REGION]
Therefore the output is similar to the local
export:
my_s3_bucket
└── usa
└── new mexico
└── santa rosa
└── 23.9
└── ...
S3 Custom¶
This sub-command exports the results to a custom AWS S3 bucket.
Usage: bna export s3-custom [OPTIONS] BUCKET_NAME S3_DIR
And the output could look like that:
my_s3_bucket
└── usa-new mexico-santa rosa-23.9
└── ...
Run¶
This command runs the full analysis in one command.
Usage: bna run [OPTIONS] COUNTRY CITY [STATE] [FIPS_CODE]
Basically this command is a combination of the prepare
, import
, compute
and export
sub-commands.
It still requires a configured, up and running database in order to complete.
bna run usa "santa rosa" "new mexico" 3570670
Run-with¶
This command provides alternative ways to run the analysis.
Compare¶
This sub-command runs the analysis with both the brokenspoke-analyzer and the original BNA, then compares the results.
Usage: bna run-with compare [OPTIONS] COUNTRY CITY [STATE] [FIPS_CODE]
Compose¶
This sub-command manages the Docker Compose environment automatically.
Usage: bna run-with compose [OPTIONS] COUNTRY CITY [STATE] [FIPS_CODE]
It combines the configure
, prepare
, import
, compute
, export
sub-commands and wraps them into the setup and tear-down of the Docker Compose
environment.
Original-BNA¶
This sub-command runs an anlalysis using the original BNA.
Usage: bna run-with original-bna [OPTIONS] CITY_SHP PFB_OSM_FILE [CITY_FIPS]
It runs the Docker container of the original BNA with the appropriate parameters for the city to analyze.