{"id":46646,"date":"2021-05-13T00:00:00","date_gmt":"2021-05-13T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/geospatial-querying-using-geohashes-and-griddb\/"},"modified":"2025-11-13T12:55:21","modified_gmt":"2025-11-13T20:55:21","slug":"geospatial-querying-using-geohashes-and-griddb","status":"publish","type":"post","link":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/","title":{"rendered":"Geospatial Querying Using GeoHashes and GridDB"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>In a <a href=\"https:\/\/griddb.net\/en\/blog\/using-geographical-queries-based-on-bounding-boxes\/\">recent blog<\/a>, we covered querying geospatial data with manual bounding boxes. In this blog, we&#8217;ll take the same dataset\/query but perform the query using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Geohash\">GeoHashes<\/a> instead.<\/p>\n<p>GeoHashes are alpha numeric encodings of areas on earth. The more bits in the encoding, the more precise the area is prescribing. A 1-digit long Geohash covers approximately 2500km while an 8-digit long Geohash covers approximately 20m. For example, the 9q geohash covers most of California and the Western United States while San Francisco \/ San Jose bay area is spread over several geohashes, 9qb, 9qc, 9q8, and 9q9.<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2021\/05\/geohashes.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2021\/05\/geohashes.png\" alt=\"\" width=\"485\" height=\"233\" class=\"aligncenter size-full wp-image-27471\" srcset=\"\/wp-content\/uploads\/2021\/05\/geohashes.png 485w, \/wp-content\/uploads\/2021\/05\/geohashes-300x144.png 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/p>\n<p>Geohashes are easily vizualized with several different tools such as <a href=\"https:\/\/bhargavchippada.github.io\/mapviz\/\">this<\/a>.<\/p>\n<h2>Java spatial4j GeoHashUtils<\/h2>\n<p>The ingest portion of our Geospatial app uses Java to read a New York Open Data&#8217;s Crime Complaint CSV file and load it into to GridDB. While there are several Geohash implementations for Java, we chose to demonstrate spatial4j&#8217;s <a href=\"https:\/\/locationtech.github.io\/spatial4j\/apidocs\/com\/spatial4j\/core\/io\/GeohashUtils.html\">GeoHashUtils<\/a> as it appears to be the most popular with the largest developer community. The modifications to the previous Ingest tool are simple, instead of manipulating the latitude and longitude into a container name, we&#8217;ll use a 6-digit Geohash:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-py\">String cName = \"geo_\"+GeohashUtils.encodeLatLon(c.Latitude, c.Longitude, 6);<\/code><\/pre>\n<\/div>\n<p>A GEOHASH column is also added to the colum schema where a full 12-digit geohash is stored.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-py\">c.GEOHASH=GeohashUtils.encodeLatLon(c.Latitude, c.Longitude);<\/code><\/pre>\n<\/div>\n<h2>Querying with Python and Proximity Hashes<\/h2>\n<p>There are many libraries that implement\/utilize geohashes to allow developers to implement more featureful applications. One of these is <code>Proximityhash<\/code> which builds a list of geohashes that cover a circle around the provided point with the given radius. Proximityhash accepts a precision argument as well, denoting how many digits of a geohash should be created as well as a compression argument where it return fewer, less precise geohashes if they are completely within the radius of the search point.<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2021\/05\/timessquare.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2021\/05\/timessquare.png\" alt=\"\" width=\"553\" height=\"237\" class=\"aligncenter size-full wp-image-27472\" srcset=\"\/wp-content\/uploads\/2021\/05\/timessquare.png 553w, \/wp-content\/uploads\/2021\/05\/timessquare-300x129.png 300w\" sizes=\"(max-width: 553px) 100vw, 553px\" \/><\/a><\/p>\n<p>Using Proximityhash, we&#8217;ll now query the data we just loaded, first by getting a list of 6-digit geohashes to figure out which containers to query and then a list of geohashes that we&#8217;ll query in each container.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-py\">radius_hashes = proximityhash.create_geohash(lat, lon, distance, 8, georaptor_flag=True).split(',')\ncontainer_hashes = proximityhash.create_geohash(lat, lon, distance, 6, georaptor_flag=False).split(',')<\/code><\/pre>\n<\/div>\n<p>Now iterate through all of the containers building a TQL statement: <code>SELECT * where geohash LIKE 'XXXXXXXX%' or geohash LIKE 'YYYYYYYY%' ...<\/code>.<\/p>\n<p>There is some query optimization as well, only geohashes that are within the queried container are added to the TQL statement.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-py\">retval=[]\nfor container in container_hashes:\n\n    ts = gridstore.get_container(\"geo_\"+container)\n    tql = \"SELECT * WHERE \"\n    orstmt=\"\"\n    for geohash in radius_hashes:\n        if geohash.startswith(container):\n            tql = tql + orstmt + \"geohash LIKE '\"+geohash+\"%'\"\n            orstmt=\" OR \"\n\n    if orstmt != \"\":\n        try:\n            query = ts.query(tql) \n            rs = query.fetch(False) \n\n            while rs.has_next():\n                data = rs.next()\n                retval.append(data)\n        except:\n            pass<\/code><\/pre>\n<\/div>\n<h2>Performance<\/h2>\n<p>We compared the performance of querying with varying precision geohashes against the manual bounding box method from our previous blog on geospatial querying.<\/p>\n<table>\n<thead>\n<tr>\n<th>Description<\/th>\n<th>Number of Geohashes<\/th>\n<th>Duration (Seconds)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Manual Bounding Box<\/td>\n<td><\/td>\n<td>0&#46;005<\/td>\n<\/tr>\n<tr>\n<td>7-digit Geohash<\/td>\n<td>59<\/td>\n<td>0&#46;007<\/td>\n<\/tr>\n<tr>\n<td>8-digit Geohash<\/td>\n<td>1522<\/td>\n<td>0&#46;15<\/td>\n<\/tr>\n<tr>\n<td>8-digit Compressed Geohash<\/td>\n<td>468<\/td>\n<td>0&#46;030<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>With similar levels of precision, Geohashing is only slightly slower.<\/p>\n<h2>Conclusion<\/h2>\n<p>Geohashing is an easy implement method to use for querying geospatial data that does not require manual manipulation of data with minimal performance loss compared to other methods. The complete source code for this blog can be found on <a href=\"https:\/\/github.com\/griddbnet\">GridDB.net&#8217;s GitHub<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In a recent blog, we covered querying geospatial data with manual bounding boxes. In this blog, we&#8217;ll take the same dataset\/query but perform the query using GeoHashes instead. GeoHashes are alpha numeric encodings of areas on earth. The more bits in the encoding, the more precise the area is prescribing. A 1-digit long Geohash [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":27483,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46646","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 Querying Using GeoHashes and GridDB | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"Introduction In a recent blog, we covered querying geospatial data with manual bounding boxes. In this blog, we&#039;ll take the same dataset\/query but perform\" \/>\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.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Geospatial Querying Using GeoHashes and GridDB | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"Introduction In a recent blog, we covered querying geospatial data with manual bounding boxes. In this blog, we&#039;ll take the same dataset\/query but perform\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-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=\"2021-05-13T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:55:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb.net\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1704\" \/>\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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/\"},\"author\":{\"name\":\"Owen\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\"},\"headline\":\"Geospatial Querying Using GeoHashes and GridDB\",\"datePublished\":\"2021-05-13T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:55:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/\"},\"wordCount\":469,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/\",\"name\":\"Geospatial Querying Using GeoHashes and GridDB | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg\",\"datePublished\":\"2021-05-13T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:55:21+00:00\",\"description\":\"Introduction In a recent blog, we covered querying geospatial data with manual bounding boxes. In this blog, we'll take the same dataset\/query but perform\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg\",\"contentUrl\":\"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg\",\"width\":2560,\"height\":1704},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\",\"name\":\"Owen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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:\/\/griddb.net\/en\/author\/owen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Geospatial Querying Using GeoHashes and GridDB | GridDB: Open Source Time Series Database for IoT","description":"Introduction In a recent blog, we covered querying geospatial data with manual bounding boxes. In this blog, we'll take the same dataset\/query but perform","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.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/","og_locale":"en_US","og_type":"article","og_title":"Geospatial Querying Using GeoHashes and GridDB | GridDB: Open Source Time Series Database for IoT","og_description":"Introduction In a recent blog, we covered querying geospatial data with manual bounding boxes. In this blog, we'll take the same dataset\/query but perform","og_url":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2021-05-13T07:00:00+00:00","article_modified_time":"2025-11-13T20:55:21+00:00","og_image":[{"width":2560,"height":1704,"url":"https:\/\/griddb.net\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.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":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/"},"author":{"name":"Owen","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66"},"headline":"Geospatial Querying Using GeoHashes and GridDB","datePublished":"2021-05-13T07:00:00+00:00","dateModified":"2025-11-13T20:55:21+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/"},"wordCount":469,"commentCount":1,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/","url":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/","name":"Geospatial Querying Using GeoHashes and GridDB | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg","datePublished":"2021-05-13T07:00:00+00:00","dateModified":"2025-11-13T20:55:21+00:00","description":"Introduction In a recent blog, we covered querying geospatial data with manual bounding boxes. In this blog, we'll take the same dataset\/query but perform","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/geospatial-querying-using-geohashes-and-griddb\/#primaryimage","url":"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg","contentUrl":"\/wp-content\/uploads\/2021\/05\/buildings_2560x1704.jpeg","width":2560,"height":1704},{"@type":"WebSite","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66","name":"Owen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.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:\/\/griddb.net\/en\/author\/owen\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/comments?post=46646"}],"version-history":[{"count":1,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46646\/revisions"}],"predecessor-version":[{"id":51321,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46646\/revisions\/51321"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media\/27483"}],"wp:attachment":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media?parent=46646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/categories?post=46646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/tags?post=46646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}