• Stars
    star
    2,729
  • Rank 16,690 (Top 0.4 %)
  • Language
    JavaScript
  • License
    BSD 3-Clause "New...
  • Created about 11 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A framework for 3D geospatial visualization in the browser

ViziCities (0.3)

A framework for 3D geospatial visualization in the browser

###ย Important links

Examples

Main changes since 0.2

  • Re-written from the ground up
  • Complete overhaul of visual styling
  • Massive performance improvements across the board
  • Vastly simplified setup and API
  • Better management and cleanup of memory
  • Sophisticated quadtree-based grid system
  • Physically-based lighting and materials (when enabled)
  • Realistic day/night skybox (when enabled)
  • Shadows based on position of sun in sky (when enabled)
  • Built-in support for image-based tile endpoints
  • Built-in support for GeoJSON and TopoJSON tile endpoints
  • Built-in support for non-tiled GeoJSON and TopoJSON files
  • Click events on individual features (when enabled)
  • Internal caching of tile-based endpoints
  • Easier to extend and add new functionality
  • Easier to access and use general three.js features within ViziCities
  • Separation of three.js from the core ViziCities codebase

Getting started

The first step is to add the latest ViziCities distribution to your website:

<script src="path/to/vizicities.min.js"></script>
<link rel="stylesheet" href="path/to/vizicities.css">

From there you will have access to the VIZI namespace which you can use to interact with and set up ViziCities.

You'll also want to add a HTML element that you want to contain your ViziCities visualisation:

<div id="vizicities"></div>

It's worth adding some CSS to the page to size the ViziCities element correctly, in this case filling the entire page:

* { margin: 0; padding: 0; }
html, body { height: 100%; overflow: hidden;}
#vizicities { height: 100%; }

The next step is to set up an instance of the ViziCities World component and position it in Manhattan:

// Manhattan
var coords = [40.739940, -73.988801];
var world = VIZI.world('vizicities').setView(coords);

The first argument is the ID of the HTML element that you want to use as a container for the ViziCities visualisation.

Then add some controls:

VIZI.Controls.orbit().addTo(world);

And a 2D basemap using tiles from CartoDB:

VIZI.imageTileLayer('http://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png', {
  attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://cartodb.com/attributions">CartoDB</a>'
}).addTo(world);

At this point you can take a look at your handywork and should be able to see a 2D map focussed on the Manhattan area. You can move around using the mouse.

If you want to be a bit more adventurous then you can add 3D buildings using Mapzen vector tiles:

VIZI.topoJSONTileLayer('https://vector.mapzen.com/osm/buildings/{z}/{x}/{y}.topojson?api_key=vector-tiles-NT5Emiw', {
  interactive: false,
  style: function(feature) {
    var height;

    if (feature.properties.height) {
      height = feature.properties.height;
    } else {
      height = 10 + Math.random() * 10;
    }

    return {
      height: height
    };
  },
  filter: function(feature) {
    // Don't show points
    return feature.geometry.type !== 'Point';
  },
  attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, <a href="http://whosonfirst.mapzen.com#License">Who\'s On First</a>.'
}).addTo(world);

Refresh the page and you'll see 3D buildings appear on top of the 2D basemap.

Take a look at the various examples to see some more complex uses of ViziCities.

Using ViziCities? Please attribute it

While we love giving you free and open access to the code for ViziCities, we also appreciate getting some recognition for all the hard work that's gone into it. A small attribution is built into ViziCities and, while possible to remove, we'd really appreciate it if you left it in.

If you absolutely have to remove the attribution then please get in touch and we can work something out.

Consultancy work

Want to use ViziCities but don't want to customise it yourself? Or perhaps you have an idea that might benefit from ViziCities but aren't sure how to make it a reality? We offer consultancy related to ViziCities projects and would love to see how we can help you.

Interested? Get in touch with us and let's get talking.

Contact us

Want to share an interesting use of ViziCities, or perhaps just have a question about it? You can communicate with the ViziCities team via email ([email protected]) and Twitter (@ViziCities).

License

ViziCities is copyright UrbanSim Inc. and uses the fair and simple BSD-3 license. Want to see it in full? No problem, you can read it here.

More Repositories

1

urbansim

Platform for building statistical models of cities and regions
Python
481
star
2

pandana

Pandas Network Analysis by UrbanSim: fast accessibility metrics and shortest paths, using contraction hierarchies ๐Ÿ—บ๏ธ
C++
386
star
3

urbanaccess

A tool for GTFS transit and OSM pedestrian network accessibility analysis by UrbanSim
Python
236
star
4

synthpop

Synthetic populations from census data
Python
101
star
5

choicemodels

Python library for discrete choice modeling
Python
68
star
6

orca

Python library for task orchestration
Python
53
star
7

osmnet

Tools for the extraction of OpenStreetMap street network data
Python
52
star
8

ansible-conda

An Ansible module for managing Python packages via Conda
Python
51
star
9

sanfran_urbansim

An UrbanSim for San Francisco: an example implementation of the new framework
Jupyter Notebook
39
star
10

spandex

Spatial Analysis and Data Extraction
Python
22
star
11

urbansim_templates

Building blocks for simulation models
Python
21
star
12

manta

Microsimulation Analysis for Network Traffic Assignment
Jupyter Notebook
16
star
13

bayarea_urbansim

UrbanSim implementation for the San Francisco Bay Area
Python
14
star
14

sandiego_urbansim

San Diego template model
Python
5
star
15

user_meeting_2014

Runnable examples for the 2014 Synthicity User Meeting
JavaScript
4
star
16

developer

Redesigned UrbanSim developer/pro forma models
Python
3
star
17

urbansim_defaults

Some starter models and functionality to use with UrbanSim
Python
3
star
18

udtk

UrbanSim Data Toolkit
Jupyter Notebook
2
star
19

udst-planning

UDST-wide issues and planning
1
star
20

conda-recipes

Conda build recipes used at UrbanSim
Batchfile
1
star
21

zone_model

Template for zonal UrbanSim model.
Python
1
star
22

sandag_urbansim

UrbanSim implementation for the SANDAG region
Python
1
star
23

public-template-workspace

Workspace for notebooks and other material related to template development
Jupyter Notebook
1
star