{"id":607,"date":"2015-11-29T00:45:53","date_gmt":"2015-11-28T23:45:53","guid":{"rendered":"http:\/\/hannes.enjoys.it\/blog\/?p=607"},"modified":"2015-11-29T00:45:53","modified_gmt":"2015-11-28T23:45:53","slug":"oakland-all-license-plate-reader-data-alpr","status":"publish","type":"post","link":"https:\/\/hannes.enjoys.it\/blog\/2015\/11\/oakland-all-license-plate-reader-data-alpr\/","title":{"rendered":"Oakland: All license plate reader data (ALPR)"},"content":{"rendered":"<p>WTF!<\/p>\n<p><a href=\"https:\/\/data.oaklandnet.com\/browse?q=alpr\">https:\/\/data.oaklandnet.com\/browse?q=alpr<\/a> via <a href=\"https:\/\/news.ycombinator.com\/item?id=10642139\">https:\/\/news.ycombinator.com\/item?id=10642139<\/a><\/p>\n<p>817159 timestamped car plate locations.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"661\" src=\"http:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-scans.png\" alt=\"oakland scans\" class=\"aligncenter size-full wp-image-613\" srcset=\"https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-scans.png 791w, https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-scans-250x209.png 250w, https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-scans-700x585.png 700w, https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-scans-120x100.png 120w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"661\" src=\"http:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-selected-scans.png\" alt=\"oakland selected scans\" class=\"aligncenter size-full wp-image-614\" srcset=\"https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-selected-scans.png 791w, https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-selected-scans-250x209.png 250w, https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-selected-scans-700x585.png 700w, https:\/\/hannes.enjoys.it\/blog\/wp-content\/uploads\/oakland-selected-scans-120x100.png 120w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><\/p>\n<p><strong>Pages:<\/strong><\/p>\n<blockquote><p>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-License-Plate-Reader-Data-ALPR-September-23-20\/6dab-n9nd<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-04-01-2014-thru\/k76g-27ne<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-3-1-2013-4-1-20\/m64r-jeei<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-3-19-2014-3-31-\/wy2w-ue82<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-4-1-14-thru-5-3\/7axi-hi5i<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-5-13-2012-7-3-2\/f28j-9q95<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-7-6-2011-12-19-\/7xz6-yzxz<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-8-6-2012-8-12-2\/gyu7-qpwz<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-8-26-2012-9-19-\/bd9f-4pn8<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-9-15-2012\/vwcs-329i&#8221; clas<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-10-20-2012-11-2\/cyhz-jk8v<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-11-20-2012-12-3\/jxx3-67d2<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-12-19-2013-1-31\/h4qp-hsyy<br \/>\nhttps:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-12-23-2010-thru\/t7dd-x7dh\n<\/p><\/blockquote>\n<p><strong>grab.sh:<\/strong><\/p>\n<blockquote><p>\nids=&#8221;6dab-n9nd<br \/>\n7axi-hi5i<br \/>\n7xz6-yzxz<br \/>\nbd9f-4pn8<br \/>\ncyhz-jk8v<br \/>\nf28j-9q95<br \/>\ngyu7-qpwz<br \/>\nh4qp-hsyy<br \/>\njxx3-67d2<br \/>\nk76g-27ne<br \/>\nm64r-jeei<br \/>\nt7dd-x7dh<br \/>\nvwcs-329i<br \/>\nwy2w-ue82&#8243;<\/p>\n<p>for id in ${ids}<br \/>\ndo<br \/>\n\techo &#8220;Grabbing ${id}&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.csv?accessType=DOWNLOAD&#8221;<br \/>\n# screw excel\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.csv?accessType=DOWNLOAD&#038;bom=true&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.json?accessType=DOWNLOAD&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.pdf?accessType=DOWNLOAD&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.rdf?accessType=DOWNLOAD&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.rss?accessType=DOWNLOAD&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.xls?accessType=DOWNLOAD&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.xlsx?accessType=DOWNLOAD&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.xml?accessType=DOWNLOAD&#8221;<br \/>\n\twget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.xml?accessType=DOWNLOAD&#8221;<br \/>\ndone<\/p>\n<p>exit\n<\/p><\/blockquote>\n<p>Be aware that only the CSV format is guaranteed to have all records. At least that&#8217;s what some files say.<\/p>\n<blockquote><p>\n$ sed &#8216;s#,.*##g&#8217; *.csv | sort | uniq | wc -l<br \/>\n817159\n<\/p><\/blockquote>\n<blockquote><p>\nsed &#8216;s#,.*##g&#8217; *.csv | sort | uniq -c | sort -h | tail<br \/>\ngrep -h &#8216;^PLATENUMBER,&#8217; *.csv | sed &#8216;s#,&#8221;(#,#g&#8217; | sed &#8216;s#)&#8221;##&#8217;<br \/>\ngrep -hEo &#8220;\\(37.*\\)\\&#8221;&#8221; *.csv | sed &#8216;s#[()&#8221; ]*##g&#8217;<\/p>\n<\/blockquote>\n<p>Happy stalking :(<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WTF! https:\/\/data.oaklandnet.com\/browse?q=alpr via https:\/\/news.ycombinator.com\/item?id=10642139 817159 timestamped car plate locations. Pages: https:\/\/data.oaklandnet.com\/Public-Safety\/All-License-Plate-Reader-Data-ALPR-September-23-20\/6dab-n9nd https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-04-01-2014-thru\/k76g-27ne https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-3-1-2013-4-1-20\/m64r-jeei https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-3-19-2014-3-31-\/wy2w-ue82 https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-4-1-14-thru-5-3\/7axi-hi5i https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-5-13-2012-7-3-2\/f28j-9q95 https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-7-6-2011-12-19-\/7xz6-yzxz https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-8-6-2012-8-12-2\/gyu7-qpwz https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-8-26-2012-9-19-\/bd9f-4pn8 https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-9-15-2012\/vwcs-329i&#8221; clas https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-10-20-2012-11-2\/cyhz-jk8v https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-11-20-2012-12-3\/jxx3-67d2 https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-12-19-2013-1-31\/h4qp-hsyy https:\/\/data.oaklandnet.com\/Public-Safety\/All-license-plate-reader-data-ALPR-12-23-2010-thru\/t7dd-x7dh grab.sh: ids=&#8221;6dab-n9nd 7axi-hi5i 7xz6-yzxz bd9f-4pn8 cyhz-jk8v f28j-9q95 gyu7-qpwz h4qp-hsyy jxx3-67d2 k76g-27ne m64r-jeei t7dd-x7dh vwcs-329i wy2w-ue82&#8243; for id in ${ids} do echo &#8220;Grabbing ${id}&#8221; wget -a wget.log -x &#8211;content-disposition &#8220;https:\/\/data.oaklandnet.com\/api\/views\/${id}\/rows.csv?accessType=DOWNLOAD&#8221; # [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33,29,10,16,34],"tags":[],"class_list":["post-607","post","type-post","status-publish","format-standard","hentry","category-fuck-surveillance","category-gis","category-open-data","category-tracking","category-wtf"],"_links":{"self":[{"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/posts\/607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/comments?post=607"}],"version-history":[{"count":7,"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/posts\/607\/revisions"}],"predecessor-version":[{"id":617,"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/posts\/607\/revisions\/617"}],"wp:attachment":[{"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/media?parent=607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/categories?post=607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hannes.enjoys.it\/blog\/wp-json\/wp\/v2\/tags?post=607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}