<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/topics-files/atom2xhtml.xsl" type="text/xsl"?>
<!-- This is a 512 byte XML comment that one must put into XML Atom feeds
such that browsers like Firefox 2.0 and IE7 will obey the XSL stylesheet.
Everybody hates overbearing browsers.
This is a 512 byte XML comment that one must put into XML Atom feeds
such that browsers like Firefox 2.0 and IE7 will obey the XSL stylesheet.
Everybody hates overbearing browsers.
This is a 512 byte XML comment that one must put into XML Atom feeds
such that browsers like Firefox 2.0 and IE7 will obey the XSL stylesheet.
Everybody hates overbearing browsers.
This is a 512 byte XML comment that one must put into XML Atom feeds
such that browsers like Firefox 2.0 and IE7 will obey the XSL stylesheet.
Everybody hates overbearing browsers.
This is a 512 byte XML comment that one must put into XML Atom feeds
such that browsers like Firefox 2.0 and IE7 will obey the XSL stylesheet.
Everybody hates overbearing browsers.
This is a 512 byte XML comment that one must put into XML Atom feeds
such that browsers like Firefox 2.0 and IE7 will obey the XSL stylesheet.
Everybody hates overbearing browsers. -->
<feed xmlns="http://www.w3.org/2005/Atom"
><title
>Blog@Case Topics: google maps</title
><link rel="self" href="http://blog.case.edu/topics/google%20maps"
 /><id
>http://blog.case.edu/topics/google%20maps</id
><category term="google maps" label="google maps"
 /><link rel="related" href="http://blog.case.edu/topics/projects" title="projects"
 /><link rel="related" href="http://blog.case.edu/topics/casewiki" title="casewiki"
 /><link rel="related" href="http://blog.case.edu/topics/javascript" title="javascript"
 /><link rel="related" href="http://blog.case.edu/topics/case" title="case"
 /><link rel="related" href="http://blog.case.edu/topics/mediawiki" title="mediawiki"
 /><link rel="related" href="http://blog.case.edu/topics/geotagging" title="geotagging"
 /><link rel="related" href="http://blog.case.edu/topics/xml" title="xml"
 /><link rel="related" href="http://blog.case.edu/topics/wiki" title="wiki"
 /><contributor
><name
>Gregory Szorc</name
><email
>gregory.szorc@case.edu</email
><uri
>http://blog.case.edu/gps10</uri
></contributor
><contributor
><name
>Brian Beck</name
><email
>brian.beck@case.edu</email
><uri
>http://blog.case.edu/bmb12</uri
></contributor
><updated
>2006-04-17T03:06:06Z</updated
><entry
><title
>JavaScript Contour Mapping: Still Seems Feasible</title
><link href="http://blog.case.edu/bmb12/2006/08/javascript_contour_mapping_still_seems_feasible"
 /><id
>http://blog.case.edu/bmb12/2006/08/javascript_contour_mapping_still_seems_feasible</id
><published
>2006-08-31T01:12:57Z</published
><updated
>2006-08-31T01:16:11Z</updated
><category term="Google Maps" label="Google Maps"
 /><category term="JavaScript" label="JavaScript"
 /><category term="Projects" label="Projects"
 /><content type="xhtml"
><div xmlns="http://www.w3.org/1999/xhtml"
>A few posts ago I talked about 
<a href="http://blog.case.edu/bmb12/2006/08/generic_contour_plotting_for_google_maps">generic contour plotting for Google Maps</a> using only JavaScript. After some more work and research into contouring algorithms, it still seems like a reasonable idea. Instead of gridding the irregularly spaced points (crime locations in my case) I learned that many contouring algorithms instead use 
<a href="http://en.wikipedia.org/wiki/Delaunay_triangulation">Delaunay triangulation</a>. So I implemented incremental triangulation in JavaScript and 
<a href="http://exogen.case.edu/contour/test_triangulate.html">the result</a> seems fast enough (note: still needs Firefox or 
<a href="http://www.adobe.com/svg/">Adobe SVG</a>). On my (older) computer it gets unreasonably slow around a few hundred points, but this is more than I expect to render at a time anyway (consider that the 
<a href="http://exogen.case.edu/crime/2006/">Crimes in 2006</a> page only has about 60 unique locations). The next step is to modify the algorithm to use 
<a href="http://mech.fsv.cvut.cz/~dr/papers/Rome05/node2.html">Constrained Delaunay</a> or 
<a href="http://www.cs.cmu.edu/~quake/tripaper/triangle3.html">Ruppert's Refined Delaunay</a>. After that, it's just a matter of interpolating the crime density (so that levels in between high and low densities are created if they don't exist), 
<a href="http://exogen.case.edu/contour/test_bezier.html">smoothing</a> the polygons, and drawing &amp; coloring them with SVG. I checked out a nice collection of research papers from 
<a href="http://library.case.edu">KSL</a> called Geometric Modelling which includes some contouring discussion. I plan to make another visit to the library this week to see if I can find anything helpful about the steps above. Googling for this stuff has been extremely helpful, but no single page has very comprehensive information, I just have to piece it together. On the 
<a href="http://forum.case.edu">Case Forum</a> 
<a href="http://blog.case.edu/gps10/">Greg</a> 
<a href="http://forum.case.edu/read/7/9319/9351#msg-9351">mentioned his idea</a> for a Case geocoding service that would aggregate information from geocoding services such as Google Maps and the 
<a href="http://wiki.case.edu">Case Wiki</a> so that any Case web service could easily geocode local places (
<a href="http://blog.case.edu/ajw33/">Andrew</a> mentioned geocoding 
<a href="http://photos.case.edu">photos</a>, for example). I think the 
<a href="http://exogen.case.edu/crime/recent/">crime log</a> location parser fits this bill pretty nicely! The 
<a href="http://opensource.case.edu/projects/crime/browser/trunk/CampusCrimeMap/crimes/parser.py">version in trunk</a> has tons of Case-specific location parsing techniques that could save other web services a lot of work. It just needs to be put on a server that will accept strings and send back geocoded results. More crime &amp; mapping news to come...</div
></content
><author
><name
>Brian Beck</name
><email
>brian.beck@case.edu</email
><uri
>http://blog.case.edu/bmb12</uri
></author
></entry
><entry
><title
>Generic Contour Plotting for Google Maps</title
><link href="http://blog.case.edu/bmb12/2006/08/generic_contour_plotting_for_google_maps"
 /><id
>http://blog.case.edu/bmb12/2006/08/generic_contour_plotting_for_google_maps</id
><published
>2006-08-19T19:01:57Z</published
><updated
>2006-08-20T15:38:28Z</updated
><category term="Google Maps" label="Google Maps"
 /><category term="JavaScript" label="JavaScript"
 /><category term="Projects" label="Projects"
 /><content type="xhtml"
><div xmlns="http://www.w3.org/1999/xhtml"
>The other day Mike, Spiros, and I began thinking about generating SVG contour maps with JavaScript. The reason is that I want to be able to show a contour map of crime density (like 
<a href="http://web.mit.edu/wplp/course/f98stud/pu/images/fm_prcrm.jpg">this one of property crime</a>) on the 
<a href="http://exogen.case.edu/crime/recent/">Campus Crime Mapper</a>. I think a way to generate generic contour maps for Google Maps in JavaScript would be extremely popular with Google Maps developers. It could be used to map 
<a href="http://www.territorial-seed.com/stores/1/images/heat_map.jpg">temperatures</a>, 
<a href="http://nrfa.fire.org.nz/projects/wta/GIS/_images/Population%20Density.jpg">population density</a>, 
<a href="http://www.fas.usda.gov/pecad/weather/US1.GIF">precipitation</a>, 
<a href="http://www.calumet.purdue.edu/wireless/imx/sflc_2nd-floor.jpg">wifi coverage</a>, and lots of other things people are using Google Maps for. There are only a couple sites out there that have overlayed contour maps on their Google map. The best one seems to be 
<a href="http://www.earthtools.org">EarthTools</a>, which uses it to display a 
<a href="http://www.earthtools.org/index.php?x=-90.04531860351562&amp;y=37.97018468810549&amp;z=11&amp;t=5&amp;m=Contour">topographic contour map</a> of the area. I can't tell if it uses static image tiles, SVG, or Canvas; maybe someone else can figure it out. You're probably wondering why I want to do it all in JavaScript and SVG as opposed to rendering static tiles on the server and overlaying them. There are a few reasons:
<ul>
<li>Using JavaScript will make it available to any Google Maps developer, regardless of their server-side tools.</li>
<li>The contour shapes will only need to be calculated once for all zoom levels, since they are infinitely scalable.</li>
<li>I am almost positive that the time it takes for the client to calculate and render the SVG contours will be about the same amount of time it would take to download all the custom tiles anyway (especially if they will be zooming and scrolling &#8212; 
<strong>hint:</strong> they will be).</li>
<li>Theoretically it will allow the user to change the granularity, colorization, and other aspects of the map.</li>
</ul>I'm not looking to generate anything insanely detailed, just something at about 
<a href="http://www.techs.co.nz/resources/photoshop/images/step.contour_map.4.jpg">this detail level</a>. I have some proof-of-concept code online that tests 
<a href="http://exogen.case.edu/contour/test.html">finding shape contours</a> and 
<a href="http://exogen.case.edu/contour/test_bezier.html">smoothing them with Bezier curves</a>. You will need either Firefox 1.5 or a browser with 
<a href="http://www.adobe.com/svg/viewer/install/mainframed.html">Adove SVG</a> enabled to view those demos (I'm considering also supporting Canvas). 
<strong>Note:</strong> Those pages (and the Crime Mapper) will be down while I move into the Village. Speaking of SVG and Canvas, I'm going to use this 
<a href="http://www.liquidx.net/plotkit/">sweet JavaScript plotting library called plotkit</a> to show crime statistics &#8212; check out the demo on that page! I'm excited to see how far I can take this, but right now I've got two days left in the Summer of Code.</div
></content
><author
><name
>Brian Beck</name
><email
>brian.beck@case.edu</email
><uri
>http://blog.case.edu/bmb12</uri
></author
></entry
><entry
><title
>Saturday Mapping Thrills</title
><link href="http://blog.case.edu/bmb12/2006/08/saturday_mapping_thrills"
 /><id
>http://blog.case.edu/bmb12/2006/08/saturday_mapping_thrills</id
><published
>2006-08-06T01:51:19Z</published
><updated
>2006-08-06T18:39:27Z</updated
><category term="Case" label="Case"
 /><category term="Google Maps" label="Google Maps"
 /><category term="Projects" label="Projects"
 /><category term="Projects" label="Projects"
 /><category term="Wiki" label="Wiki"
 /><content type="xhtml"
><div xmlns="http://www.w3.org/1999/xhtml"
>Today I decided that I needed to be punished and proceeded to create and geocode 
<a href="http://wiki.case.edu/Category:Parking_Lots">58 parking lots</a> on the 
<a href="http://wiki.case.edu">Case Wiki</a>. This will slightly help the 
<a href="http://exogen.case.edu/crime/recent/">campus crime mapper</a> since some reports are given lot numbers as their location. You probably noticed that the crime mapper got a bit fancier. I made icons for a few categories of violations, and took care of multiple incidents being located in one spot. It's also running with FastCGI now so maybe it's faster? One pattern I've already started to notice is that some places are hotspots for a certain type of violation. Check out the 
<a href="http://exogen.case.edu/crime/2006/">Crimes in 2006</a> page and you can tell that it's a bad idea to park your bike near Fribley, and to park your car on Carlton Road. (Also on that page, zoom way out for a surprise!) Well, I'm all geocoded out after hunting down parking lots for the past couple hours. Suggestions for the crime mapper are welcome. 
<strong>P.S.</strong> The code is 
<a href="http://opensource.case.edu/projects/crime/">now on opensource.case.edu</a> and there's a to-do list on the wiki. Feel free to browse around or contribute! 
<strong>Update:</strong> Hey all you geocoders and wiki mappers, check out this awesome resource I just found. It's a 
<a href="http://www.case.edu/finadmin/plantsrv/construct/Building%20Names.htm">build identification glossary</a> with location names, aliases, and addresses. This is exactly what the crime mapper needs...</div
></content
><author
><name
>Brian Beck</name
><email
>brian.beck@case.edu</email
><uri
>http://blog.case.edu/bmb12</uri
></author
></entry
><entry
><title
>Google Map of Case Campus Updated</title
><link href="http://blog.case.edu/gps10/2006/04/16/google_map_of_case_campus_updated"
 /><id
>http://blog.case.edu/gps10/2006/04/16/google_map_of_case_campus_updated</id
><published
>2006-04-17T03:04:02Z</published
><updated
>2006-04-17T03:06:06Z</updated
><category term="CaseWiki" label="CaseWiki"
 /><category term="Google Maps" label="Google Maps"
 /><content type="xhtml"
><div xmlns="http://www.w3.org/1999/xhtml"
>I was randomly checking the 
<a href="http://wiki.case.edu/CaseWiki:Map">Google Map of Case</a> on the 
<a href="http://wiki.case.edu/Main_Page">Case Wiki</a> and noticed that the satellite photographs have been updated. Instead of a blank field, we now have construction photos of the 
<a href="http://wiki.case.edu/Village_at_115">Village at 115</a>. Unfortunately, the 
<a href="http://wiki.case.edu/Baker_Building">Baker Building</a> still exists. I guess we'll have to wait until the next update...</div
></content
><author
><name
>Gregory Szorc</name
><email
>gregory.szorc@case.edu</email
><uri
>http://blog.case.edu/gps10</uri
></author
></entry
><entry
><title
>Google Maps API + Case Wiki = Map of Wiki Entries</title
><link href="http://blog.case.edu/gps10/2005/07/06/wikicase_wiki_geotag"
 /><id
>http://blog.case.edu/gps10/2005/07/06/wikicase_wiki_geotag</id
><published
>2005-07-06T15:17:09Z</published
><updated
>2005-08-20T19:53:34Z</updated
><category term="CaseWiki" label="CaseWiki"
 /><category term="Google Maps" label="Google Maps"
 /><category term="MediaWiki" label="MediaWiki"
 /><category term="XML" label="XML"
 /><category term="geotagging" label="geotagging"
 /><content type="xhtml"
><div xmlns="http://www.w3.org/1999/xhtml"
>Some previous posts (
<a href="http://blog.case.edu/ajc30/2005/07/gis_google_maps.html">1</a>, 
<a href="http://blog.case.edu/jms18/2005/07/05/google_maps_view_of_the_case_quad">2</a>) touched on the subject of using the new 
<a href="http://www.google.com/apis/maps/">Google Maps API</a> to integrate with the 
<a href="http://wiki.case.edu">Case Wiki</a>. Well, I have done just that. Check out 
<a href="http://wiki.case.edu/CaseWiki:Map">CaseWiki:Map</a> for a Google Satellite Map of the 
<a href="http://wiki.case.edu/Category:Case_Quad">Case Quad</a> with many of the 
<a href="http://wiki.case.edu/Category:Buildings">buildings</a> marked. Click on the little balloon to see the name of the building. The name itself is a link, so clicking on it will take you to the wiki article for that building. Like all Google maps, clicking and dragging will pan the map. I also made the map so that double clicking on a point will display the coordinates for that point directly under the map. This makes it easy to find coordinates to 
<a href="http://wiki.case.edu/Help:Geo">geo tag</a> your entries. 
<strong>*NOTE*</strong> It is possible to turn on double click editing in the wiki preferences. If you want to find a coordinate, you might want to turn this off! Currently, I am directly connecting to the database to obtain the coordinates for points in the wiki. This is no fun. By the end of the day I should have a primitive web service on the wiki that returns an XML document containing all of the geo-tagged entries in the wiki. That way, others can start playing around with the data. If you have some free time today, why don't you head over to the 
<a href="http://wiki.case.edu/Main_Page">Case Wiki</a> and get tag some 
<a href="http://wiki.case.edu/Category:Buildings">entries</a>. Better yet, add some content of your own!</div
></content
><author
><name
>Gregory Szorc</name
><email
>gregory.szorc@case.edu</email
><uri
>http://blog.case.edu/gps10</uri
></author
></entry
></feed
>