{"id":46603,"date":"2020-05-05T00:00:00","date_gmt":"2020-05-05T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/"},"modified":"2025-11-13T12:54:56","modified_gmt":"2025-11-13T20:54:56","slug":"geospatial-analysis-of-nyc-crime-data-with-griddb","status":"publish","type":"post","link":"https:\/\/www.griddb.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/","title":{"rendered":"Geospatial Analysis of NYC Crime Data with GridDB"},"content":{"rendered":"<p>GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their applications. We&#8217;ve covered GridDB&#8217;s Geometry features before in our posts on <a href=https:\/\/griddb.net\/en\/blog\/using-geometry-values-griddb\/>Using Geometry Values with GridDB<\/a> and <a href=https:\/\/griddb.net\/en\/blog\/geometry-data-application\/>Geometry Data Applications<\/a>.<\/p>\n<p>This blog post delves into practical use of the Geometry data type by looking at New York City&#8217;s historical crime complaint data. This data provides Latitude and Longitude of reported crimes so we will be using GridDB to see in what area a complaint occurred in. After demonstrating how to ingest the crime data from NYC Open Data, we&#8217;ll look at seeing how the amount of crime differs month to month in Central Park. We will also load external polygon data by seeing complaint counts in individual precincts.<\/p>\n<p>The primary purpose of use of GridDB&#8217;s Geometry data type with Geospatial data points is being able to search where points, polylines (paths), or polygons (areas) intersect. Points, polylines, and polygons are defined using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Well-known_text_representation_of_geometry\">Well-known-text (WKT)<\/a> which is a markup language that defines vector geometry objects on a map.<\/p>\n<h2>Ingest<\/h2>\n<p>We fetched the historic crime data from <a href=https:\/\/data.cityofnewyork.us\/Public-Safety\/NYPD-Complaint-Data-Historic\/qgea-i56i>NYC Open Data<\/a>. The following table shows both the CSV data fields and the GridDB schema. <\/p>\n<table width=100%>\n<tr>\n<th width=50%> CSV Values<\/th>\n<th width=50%>GridDB Schema<\/th>\n<\/tr>\n<tr>\n<td valign=top>\n<ul>\n<li> CMPLNT_NUM (Unique ID)\n<li> CMPLNT_FR_DT (Complaint Date)\n<li> CMPLNT_FR_TM (Complaint Time)\n<li> CMPLNT_TO_DT\n<li> CMPLNT_TO_TM\n<li> ADDR_PCT_CD\n<li> RPT_DT\n<li> KY_CD\n<li> OFNS_DESC\n<li> PD_CD\n<li> PD_DESC\n<li> CRM_ATPT_CPTD_CD\n<li> LAW_CAT_CD\n<li> BORO_NM\n<li> LOC_OF_OCCUR_DESC\n<li> PREM_TYP_DESC\n<li> JURIS_DESC\n<li> JURISDICTION_CODE\n<li> PARKS_NM\n<li> HADEVELOPT\n<li> HOUSING_PSA\n<li> X_COORD_CD\n<li> Y_COORD_CD\n<li> SUSP_AGE_GROUP\n<li> SUSP_RACE\n<li> SUSP_SEX\n<li> TRANSIT_DISTRICT\n<li> Latitude (Floating Point Latitude)\n<li> Longitude (Floating Point Longitude)\n<li> Lat_Lon (Lat Lon WKT)\n<li> PATROL_BORO\n<li> STATION_NAME\n<li> VIC_AGE_GROUP\n<li> VIC_RACE\n<li> VIC_SEX\n<\/ul>\n<\/td>\n<td valign=top>\n<pre>public class Complaint {\n    int CMPLNT_NUM;\n    Date CMPLNT_FR_DT;\n    Date CMPLNT_TO_DT;\n    int ADDR_PCT_CD;\n    Date RPT_DT;\n    int KY_CD;\n    String OFNS_DESC;\n    int PD_CD;\n    String PD_DESC;\n    String CRM_ATPT_CPTD_CD;\n    String LAW_CAT_CD;\n    String BORO_NM;\n    String LOC_OF_OCCUR_DESC;\n    String PREM_TYP_DESC;\n    String JURIS_DESC;\n    int JURISDICTION_CODE;\n    String PARKS_NM;\n    String HADEVELOPT;\n    String HOUSING_PSA;\n    int X_COORD_CD;\n    int Y_COORD_CD;\n    String SUSP_AGE_GROUP;\n    String SUSP_RACE;\n    String SUSP_SEX;\n    int TRANSIT_DISTRICT;\n    float Latitude;\n    float Longitude;\n    Geometry Lat_Lon;\n    String PATROL_BORO;\n    String STATION_NAME;\n    String VIC_AGE_GROUP;\n    String VIC_RACE;\n    String VIC_SEX;\n}<\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<p>For simplicity sake, we&#8217;re only using one container instead of splitting data into multiple containers. <\/p>\n<p>Parsing the CSV easy with the CSVParser Library:<\/p>\n<pre>\n   Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(in);\n   for (CSVRecord record : records) {\n        Complaint c = parseCsvRecord(record);\n        if(c != null)\n            col.put(c);\n   }\n   col.commit();\n<\/pre>\n<p>There are a few changes to the data that need to be made within the parseCsvRecord function. First, the complaint time is a non-standard but easily parse-able format of MM\/DD\/YYYY and HH:MM:SS.<\/p>\n<pre>\nString dt[] = r.get(\"CMPLNT_FR_DT\").split(\"\/\");\nString tm[] = r.get(\"CMPLNT_FR_TM\").split(\":\");\nc.CMPLNT_FR_DT = new Date(Integer.parseInt(dt[2])-1900, Integer.parseInt(dt[0])-1, Integer.parseInt(dt[1]), Integer.parseInt(tm[0]), Integer.parseInt(tm[1]), Integer.parseInt(tm[2]));\n<\/pre>\n<p>While the raw CSV contains WKT text for the point where the crime occurred in &#8220;lat lon&#8221; but the accepted WKT format is POINT(x y&#8221;) and Latitude is denotes Y-axis and Longitude the X-axis so we flip them.<\/p>\n<pre>\nc.Lat_Lon =   Geometry.valueOf(\"POINT(\"+c.Longitude+\" \"+c.Latitude+\")\");\n<\/pre>\n<h2>Crime by Precinct<\/h2>\n<p>NYC Open Data also provides WKT polygons of individual police precincts available here <a href=https:\/\/data.cityofnewyork.us\/Public-Safety\/Police-Precincts\/78dh-3ptz\n>https:\/\/data.cityofnewyork.us\/Public-Safety\/Police-Precincts\/78dh-3ptz<br \/>\n<\/a>. Like the complaint data, it&#8217;s easily loaded with CSVParser but since each precinct may consist of multiple polygons and uses the WKT MULTIPOLYGON type some further processing is required to split the MULTIPOLYGON into simple POLYGONs.<\/p>\n<pre>\n\nString polys[] = record.get(\"the_geom\").split(\"\\),\");\nint count=0;\nfor(int i=0; i < polys.length; i++) {\n    String subpoly = polys[i].replace(\"MULTIPOLYGON (\", \"\").replace(\")))\", \")\");\n    query = col.query(\"select * where ST_MBRIntersects(Lat_Lon, ST_GeomFromText('POLYGON\"+subpoly+\")') )\");\n    rs = query.fetch(false);\n    count =+ rs.size();\n}\n<\/pre>\n<p>The results are as follows: <\/p>\n<pre>\nPrecinct 1: 243         Precinct 52: 888\nPrecinct 5: 177         Precinct 60: 185\nPrecinct 6: 216         Precinct 61: n\/a\nPrecinct 71: 227        Precinct 62: 210\nPrecinct 72: 262        Precinct 63: 324\nPrecinct 7: 132         Precinct 66: 261\nPrecinct 9: 233         Precinct 68: 233\nPrecinct 22: 345        Precinct 69: 220\nPrecinct 10: 203        Precinct 70: 369\nPrecinct 13: 400        Precinct 76: 135\nPrecinct 14: 428        Precinct 77: 334\nPrecinct 17: 174        Precinct 78: 211\nPrecinct 20: 132        Precinct 81: 12\nPrecinct 18: 379        Precinct 83: 498\nPrecinct 19: 225        Precinct 84: 175\nPrecinct 23: 225        Precinct 88: 174\nPrecinct 24: 147        Precinct 90: 290\nPrecinct 25: 336        Precinct 94: 102\nPrecinct 79: 266        Precinct 100: 8\nPrecinct 26: 217        Precinct 101: 0\nPrecinct 28: 213        Precinct 102: 283\nPrecinct 30: 206        Precinct 103: 367\nPrecinct 32: 361        Precinct 104: 511\nPrecinct 73: 410        Precinct 105: 481\nPrecinct 33: 152        Precinct 106: 227\nPrecinct 34: 224        Precinct 107: 294\nPrecinct 75: 529        Precinct 108: 262\nPrecinct 40: 444        Precinct 109: 299\nPrecinct 41: 304        Precinct 110: 431\nPrecinct 42: 487        Precinct 111: 138\nPrecinct 43: 408        Precinct 112: 178\nPrecinct 48: 495        Precinct 113: n\/a\nPrecinct 44: 559        Precinct 114: 28\nPrecinct 45: 323        Precinct 115: 246\nPrecinct 46: 400        Precinct 120: 228\nPrecinct 47: 441        Precinct 121: 194\nPrecinct 49: 267        Precinct 122: 217\nPrecinct 50: 219        Precinct 123: 83\nPrecinct 67: 504\n<\/pre>\n<h2>Central Park<\/h2>\n<p>Our first geospatial analysis is looking at crime in Central Park month to month too see if crime complaints increase or decrease with the temperature. As Central Park is not aligned to the North-South axis, you can't simply use a bounding box (where lat > min && lat < max &#038;&#038; lon > min && lon < max) as you would rudimentary geospatial analysis queries.\n\nInstead we can build a polygon of each corner of Central Park and query crime complaints that intersect with that polygon. \nTo find the points of Central Park and build the WKT object a useful tool is <a href=\"https:\/\/arthur-e.github.io\/Wicket\/sandbox-gmaps3.html\">Wicket<\/a>. <\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2020\/04\/wicket.png\" alt=\"Using Wicket To Build Geospatial Analysis Queries\" width=\"1004\" height=\"433\" class=\"alignnone size-full wp-image-26517\" srcset=\"\/wp-content\/uploads\/2020\/04\/wicket.png 1004w, \/wp-content\/uploads\/2020\/04\/wicket-300x129.png 300w, \/wp-content\/uploads\/2020\/04\/wicket-768x331.png 768w, \/wp-content\/uploads\/2020\/04\/wicket-600x259.png 600w\" sizes=\"(max-width: 1004px) 100vw, 1004px\" \/><\/p>\n<p>With that, we can build the TQL query<\/p>\n<pre>\nString CentralParkWKT = \"POLYGON((-73.97308900174315 40.764422448981996,-73.98192956265623 40.76812781417226,-73.9584064734938 40.80087951931638,-73.94982340464614 40.797240957024385,-73.97308900174315 40.764422448981996))\";\n\nfor(int month=0; month <= 11; month++) {\n    int count=0;\n    for (int year=108; year <= 118; year++) {\n        Date start = new Date(year, month, 1);\n        Date end = new Date(year, month+1, 1);\n\n\tQuery<Complaint> query = col.query(\"select * where ST_MBRIntersects(Lat_Lon, ST_GeomFromText('\"+CentralParkWKT+\"')) and CMPLNT_FR_DT >= TO_TIMESTAMP_MS(\"+start.getTime()+\")  and CMPLNT_FR_DT < TO_TIMESTAMP_MS(\"+ end.getTime()+\") \");\n        RowSet<Complaint> rs = query.fetch(false);\n        count += rs.size(); \n    }\n    System.out.println(month+\": \"+count);\n}\n<\/pre>\n<p>Now to answer our initial question, does the amount of crime change as the temperature changes? <\/p>\n<pre>\nJanuary: 30\nFebruary: 23\nMarch: 36\nApril: 33\nMay: 29\nJune: 19\nJuly: 26\nAugust: 49\nSeptember: 25\nOctober: 23\nNovember: 26\nDecember: 18\n<\/pre>\n<p>The December and August totals would lend support to the argument, but January and June disagree thus the results are inconclusive.<\/p>\n<p>If you're interested in exploring the data further or having a look at the complete code, it is available <a href=\"https:\/\/griddb.net\/en\/download\/26535\/\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their applications. We&#8217;ve covered GridDB&#8217;s Geometry features before in our posts on Using Geometry Values with GridDB and Geometry Data Applications. This blog post delves into practical use of the Geometry data [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":26531,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46603","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Geospatial Analysis of NYC Crime Data with GridDB | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Geospatial Analysis of NYC Crime Data with GridDB | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-05T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:54:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.griddb.net\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Owen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Owen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/\"},\"author\":{\"name\":\"Owen\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\"},\"headline\":\"Geospatial Analysis of NYC Crime Data with GridDB\",\"datePublished\":\"2020-05-05T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:54:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/\"},\"wordCount\":648,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/\",\"name\":\"Geospatial Analysis of NYC Crime Data with GridDB | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg\",\"datePublished\":\"2020-05-05T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:54:56+00:00\",\"description\":\"GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg\",\"contentUrl\":\"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg\",\"width\":2560,\"height\":1707},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb.net\/en\/#website\",\"url\":\"https:\/\/griddb.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\",\"name\":\"Owen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"caption\":\"Owen\"},\"url\":\"https:\/\/www.griddb.net\/en\/author\/owen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Geospatial Analysis of NYC Crime Data with GridDB | GridDB: Open Source Time Series Database for IoT","description":"GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/","og_locale":"en_US","og_type":"article","og_title":"Geospatial Analysis of NYC Crime Data with GridDB | GridDB: Open Source Time Series Database for IoT","og_description":"GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their","og_url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2020-05-05T07:00:00+00:00","article_modified_time":"2025-11-13T20:54:56+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.griddb.net\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg","type":"image\/jpeg"}],"author":"Owen","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"Owen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#article","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/"},"author":{"name":"Owen","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66"},"headline":"Geospatial Analysis of NYC Crime Data with GridDB","datePublished":"2020-05-05T07:00:00+00:00","dateModified":"2025-11-13T20:54:56+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/"},"wordCount":648,"commentCount":1,"publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/","name":"Geospatial Analysis of NYC Crime Data with GridDB | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg","datePublished":"2020-05-05T07:00:00+00:00","dateModified":"2025-11-13T20:54:56+00:00","description":"GridDB Community Edition 4.1 and newer feature a Geometry data type that allows developers to combine both Time Series and Geospatial analysis in their","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/geospatial-analysis-of-nyc-crime-data-with-griddb\/#primaryimage","url":"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg","contentUrl":"\/wp-content\/uploads\/2020\/05\/53248-carriage_2560x1707.jpeg","width":2560,"height":1707},{"@type":"WebSite","@id":"https:\/\/griddb.net\/en\/#website","url":"https:\/\/griddb.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66","name":"Owen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","caption":"Owen"},"url":"https:\/\/www.griddb.net\/en\/author\/owen\/"}]}},"_links":{"self":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts\/46603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/comments?post=46603"}],"version-history":[{"count":1,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts\/46603\/revisions"}],"predecessor-version":[{"id":51288,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts\/46603\/revisions\/51288"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/media\/26531"}],"wp:attachment":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/media?parent=46603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/categories?post=46603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/tags?post=46603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}