{"id":72,"date":"2016-12-22T13:18:07","date_gmt":"2016-12-22T13:18:07","guid":{"rendered":"http:\/\/blog.get-map.org\/?p=72"},"modified":"2016-12-22T13:18:07","modified_gmt":"2016-12-22T13:18:07","slug":"surveillance-under-surveillance-overlay","status":"publish","type":"post","link":"https:\/\/blog.get-map.org\/index.php\/2016\/12\/22\/surveillance-under-surveillance-overlay\/","title":{"rendered":"&#8220;Surveillance under Surveillance&#8221; Overlay"},"content":{"rendered":"<p><a name=\"preamble\"><\/a> <\/p>\n<p>I&#8217;ve added another overlay style that tries to display the same information as the <a href=\"https:\/\/kamba4.crux.uberspace.de\/\">Surveillance under Surveillance<\/a> map, showing surveillance cameras and an estimate of the areads covered by them.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/blog.get-map.org\/wp-content\/uploads\/2016\/12\/cameras.png\" style=\"border-width: 0; vertical-align: text-bottom;\" alt=\"align=right\"><\/p>\n<p><!--more--><\/p>\n<p>Unfortunately it wasn&#8217;t possible to easily archive this with a Mapnik stylesheet as neither Mapnik nor PostGIS come with an easy way to generate circle segments.<\/p>\n<p>I first tried to use the experimental Python input plugin for Mapnik to implement this, but couldn&#8217;t get this running with Mapnik v3.<\/p>\n<p>I also thought about using pl\/Python on the database side to generate circle segments, but eventually decided to implement this in the Ocitysmap render itself, completely bypassing Mapnik.<\/p>\n<p>For this I created a simple plugin interface for adding render plugings that can directly draw into the maps Cairo context, on top of the output already generated by Mapnik.<\/p>\n<p>More on Ocitysmap render plugins will be published in a separate blog post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve added another overlay style that tries to display the same information as the Surveillance under Surveillance map, showing surveillance cameras and an estimate of the areads covered by them.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts\/72"}],"collection":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/comments?post=72"}],"version-history":[{"count":1,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts\/72\/revisions"}],"predecessor-version":[{"id":73,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/posts\/72\/revisions\/73"}],"wp:attachment":[{"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/media?parent=72"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/categories?post=72"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.get-map.org\/index.php\/wp-json\/wp\/v2\/tags?post=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}