codeforamerica / project-ideas

A place to collect ideas for CfA health projects
41 stars 10 forks source link

SimpliCity all the cities #62

Open ondrae opened 9 years ago

ondrae commented 9 years ago

Description

Check it out and play around a little bit. SimpliCity

This was made by Ashville city gov. Its so good. The story is that the City came to the Summit and got inspired by user centered design. So they did it and now their projects are great!

Its totally open source

Questions

What are the requirements to redeploy it to other cities?

What improvements are needed to make it useful for other cities?

Could it become a SaaS? Could we build a builder? Can we work with ESRI on getting it widespread?

daveism commented 9 years ago

Let me know if you have any questions about simplicity. We are working to get the backend setup on github also. There is a lot of PostGIS magic on the backend to help make this work.

ArcGIS server is only really needed for the geocoder.

ondrae commented 9 years ago

I'm trying to figure out what would be required for other cities to set it up. Both tech setup as well as connecting to local zoning pages.

Best case would be a list of instructions for a volunteer group to get it running for their city.

carlyleec commented 9 years ago

Thanks for the shout out! We'd love some help on SimpliCity, particularly in regards to redeployment. Up to this point, We've mainly been focused on building it to work, rather than making it to redeploy, and I think that we still have a fair number of usability and other issues to work through before we start trying to redeploy it.

But off hand I can think of a few things that might need to happen:

  1. As Dave mentioned, we need to get a backend PostGIS scripts on github
  2. Standardize the data on the backend. Is there a standard for crime data? property data? etc. Right now, the views are referencing data properties by name for each topic. This wouldn't be a big deal if we used a standard, or least provided an example schema.
  3. Make the front-end easier to configure. Right now you have to change things in a few different files if the backend changes or you want to change what topics are shown. We would need a clearly documented config file which would define what topics are displayed and where to look for data on the backend.
  4. Maybe use something besides ArcGIS REST (although most cities govs are probably going to have ESRI). We only went with ESRI because we had it and their geocoders are awesome at searching. We're using the geocoders to not only search addresses and streets, but also neighborhoods, owners, PINs too. The geocoder returns an id and table/layer name. The actual data tables could be on any open data portal (then just defined in a coinfig file). We are not doing to any spatial queries beyond using the geocoder. If we could find a really good search tool we could drop the ESRI dependancy. We've also thought about trying to do something with cartodb.

Thoughts...

daveism commented 9 years ago

I pushed the back-end scripts I am using to power simplicity to GitHub. Beware it's not pretty. simplicty backend

zmon commented 9 years ago

FYI this has some of the data on Apartment Searches A interesting application utilizing multiple datasets to determine the livability of a house/apartment.

Also KC is interested in your project

ondrae commented 9 years ago

Hmmm, does seem more complicated than our first look.

A few examples of what it may look like to make redeployable in another city:

ondrae commented 9 years ago

Hi @daveism @carlyleec Slowly poking at this and I have a question.

What does the backend repo do? I ask because I see a connection to an ArcGIS server, so my assumption is that you are pulling from live data, not some postgres database.

I'm also new to Angular so may be looking in the wrong place.

daveism commented 9 years ago

@ondrae

we are using ArcGIS server for the rest api and the ESRI geocodding services. ArcGIS server povided us with an api, that we did not have to develop and we already had available to us at no additional cost.

The backend repo is a shell/sql based job to build a cache of all the data. When we tried to do this on the fly as the user requested it was very sloooooow.

It's totally postgres/postgis. and yes I really need to work on the comments and documentation... I am using postgres/postgis to do a bunch of spatial queries to build a kind of "cache".

The flow is like this find all the addresses. Create a series of buffers. Find all (crime, development ) for each buffered address and get there unique ids. Write this to a table for each address

Also for each address find the zoning, if it's in the city, if it has any zoning overlays, property, neighbor hood, etc. All using postgis spatial functions. Write this to a table for each address

HTH

ondrae commented 9 years ago

Where does it connect to this postgis server?

daveism commented 9 years ago

I think I am leaving too much out I realize I posted the backend code without enough explanation and I am doing a pretty poor job at explaining my madness :smiley: I put the backend on GitHub to make sure it happened, instead of saying it's not ready. and yes it is kind of messy.

The simplicity-ui uses Angular and connects to the ArcGIS server rest API.

The backend populates a Postgres/PostGIS server with a whole bunch of data including the "cached" data set. ArcGIS server data

the data in the Postgres/PostGIS database is also connected to ArcGIS server.

the code in backend connects to Postgres via the psql command line tool in this file in the backend repo.