{"id":3087,"date":"2018-10-16T01:03:08","date_gmt":"2018-10-16T06:03:08","guid":{"rendered":"https:\/\/blogs.mathworks.com\/loren\/?p=3087"},"modified":"2018-09-21T01:04:36","modified_gmt":"2018-09-21T06:04:36","slug":"introducing-the-topotoolbox","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/loren\/2018\/10\/16\/introducing-the-topotoolbox\/","title":{"rendered":"Introducing the TopoToolbox"},"content":{"rendered":"<div class=\"content\"><!--introduction--><p>My guest blogger today is Sebastian Gross. He is an engineer in our academia team in Munich, Germany, and works with our university customers to make them successful in research and teaching. In today&#8217;s post he introduces <a href=\"https:\/\/topotoolbox.wordpress.com\/\">TopoToolbox<\/a>[1,2].<\/p><!--\/introduction--><h3>Contents<\/h3><div><ul><li><a href=\"#9504d068-69f0-48cd-8cf8-22fda2cf174f\">Overview<\/a><\/li><li><a href=\"#25778d79-6ec6-45e7-aa8b-c6a13914266e\">Importing data<\/a><\/li><li><a href=\"#eb06f06e-47d6-44b6-9fb3-11b47f7d65df\">Loading Bavarian data set<\/a><\/li><li><a href=\"#9ad635c7-98fc-43b8-ac6a-bb5819644b7b\">Reprojection<\/a><\/li><li><a href=\"#c3a327f4-d1cd-4481-bcab-c23901ac763e\">Display data with and without hillshading<\/a><\/li><li><a href=\"#d694b362-8436-4406-83a4-4364f34cbe39\">Optional sink filling<\/a><\/li><li><a href=\"#9dbe6000-ae15-4366-a377-1a4bfc21d7cd\">Calculate stream object<\/a><\/li><li><a href=\"#1fefb37f-99a0-479c-929c-2320a9f19c3b\">Display water streams<\/a><\/li><li><a href=\"#f3f746ac-a1da-4e6e-aa97-d33f2b923514\">Calculate water accumulation<\/a><\/li><li><a href=\"#363a4097-229f-41ea-af23-377a73571521\">Display flow accumulation<\/a><\/li><li><a href=\"#95272b67-bfb8-4f7f-b9b4-46cf08830e83\">Next steps<\/a><\/li><li><a href=\"#8bc508a8-e7ab-4c76-bd9b-34ea70fce54d\">References<\/a><\/li><\/ul><\/div><h4>Overview<a name=\"9504d068-69f0-48cd-8cf8-22fda2cf174f\"><\/a><\/h4><p>Thank you, Loren, for giving me this opportunity to write about <a href=\"https:\/\/topotoolbox.wordpress.com\/\">TopoToolbox<\/a>. This collection of functions offers quantitative methods for the analysis of relief and flow pathways in digital elevation models while not using a GIS environment. One application is to learn about flooding risks in a particular geographical area.<\/p><p>The idea to write a blog post about it came to me when reading news such as &#8216;Flooding has slammed every Iowa county since 1988, some as many as 17 times&#8217;[3]. These make you think. Even closer for me, severe floodings were reported in six German federal states and seven other countries in 2013[4].<\/p><p>Most of us have seen some degree of flooding happen - a street submerged in water, a flooded field, or a river that has left its usual boundaries. Just this year on a private vacation trip my wife and I encountered a bridge which had collapsed due to a river&#8217;s force and we had to continue our approach to an archeological site on foot. Research suggests that the risk is increasing because of climate change[5]. So, I was tempted to take a closer look at flooding.<\/p><p>A while back during the European Geoscience Union General Assembly (EGU) in Vienna, Austria, in April 2018, I met <a href=\"https:\/\/de.mathworks.com\/matlabcentral\/profile\/authors\/870595-wolfgang-schwanghart\">Wolfgang Schwanghart<\/a> who is a geomorphologist at the University of Potsdam in Germany. Wolfgang is one of the authors of TopoToolbox. I had previously met the second author Dirk Scherler as well. Dirk works at the German Research Center for Geosciences (GFZ) in Potsdam and one of his research fields is geomorphology.<\/p><p>TopoToolbox is available via File Exchange[6] as zip-File or from the project&#8217;s website[1] in several formats including a toolbox file (.mltbx) for simple installation and management. The toolbox comes with an introduction document in Live Script format, which let&#8217;s you easily move along the code sections, read the rich comments, and view the results inline.<\/p><h4>Importing data<a name=\"25778d79-6ec6-45e7-aa8b-c6a13914266e\"><\/a><\/h4><p>You can import topological data from opentopography.org with the command:<\/p><pre class=\"codeinput\">DEM = readopentopo();\r\n<\/pre><pre class=\"codeoutput\">-------------------------------------\r\nreadopentopo process:\r\nDEM type: SRTMGL3\r\nAPI url: http:\/\/opentopo.sdsc.edu\/otr\/getdem\r\nLocal file name: C:\\Users\\loren\\AppData\\Local\\Temp\\tp6995bbab_ef43_46a2_bac9_b701b896fb61.tif\r\nArea: 2.4e+03 sqkm\r\n-------------------------------------\r\nStarting download: 21-Sep-2018 11:27:03\r\nDownload finished: 21-Sep-2018 11:27:13\r\nReading DEM: 21-Sep-2018 11:27:13\r\n \r\nGRIDobj cannot derive a map projection structure. This is either\r\nbecause the grid is in a geographic coordinate system or because\r\ngeotiff2mstruct cannot identify the projected coordinate system used.\r\nTopoToolbox assumes that horizontal and vertical units of DEMs are \r\nthe same. It is recommended to use a projected coordinate system,\r\npreferably UTM WGS84. Use the function GRIDobj\/reproject2utm\r\nto reproject your grid.\r\n \r\nDEM read: 21-Sep-2018 11:27:14\r\nTemporary file deleted\r\nDone: 21-Sep-2018 11:27:14\r\n-------------------------------------\r\n<\/pre><p>The process also returns a warning with additional information. We will run the suggested reprojection later.<\/p><p>However, the returned data is from the area in Fresno, California, if you do not specify anything else. By chance, I passed the area a few years back, but I used data from the Bavarian Danube river area highlighted in the article[4].<\/p><h4>Loading Bavarian data set<a name=\"eb06f06e-47d6-44b6-9fb3-11b47f7d65df\"><\/a><\/h4><p>The dataset of southern Bavaria can be loaded with<\/p><pre class=\"codeinput\">load(<span class=\"string\">'bavaria_dem.mat'<\/span>);\r\n<\/pre><h4>Reprojection<a name=\"9ad635c7-98fc-43b8-ac6a-bb5819644b7b\"><\/a><\/h4><p>To prepare our data for use with TopoToolbox, I follow the warning message's advice and run <tt>reproject2utm<\/tt> .<\/p><pre class=\"codeinput\">DEM = reproject2utm(DEM,90);\r\n<\/pre><h4>Display data with and without hillshading<a name=\"c3a327f4-d1cd-4481-bcab-c23901ac763e\"><\/a><\/h4><p>The results so far can be displayed with a simple command <tt>imagesc<\/tt> .<\/p><pre class=\"codeinput\">imagesc(DEM);\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/images\/loren\/2018\/TopoToolboxExampleLSSG_01.png\" alt=\"\"> <p>However, we can achieve better highlighting of ridges, slopes, and mountains (hillshading) with <tt>imageschs<\/tt><\/p><pre class=\"codeinput\">imageschs(DEM);\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/images\/loren\/2018\/TopoToolboxExampleLSSG_02.png\" alt=\"\"> <h4>Optional sink filling<a name=\"d694b362-8436-4406-83a4-4364f34cbe39\"><\/a><\/h4><p>Now, back to the original idea of looking at water pathways. Using the <tt>fillsinks<\/tt> command,<\/p><pre class=\"codeinput\">DEMf = fillsinks(DEM);\r\n\r\n\r\n<span class=\"comment\">% holes in the map are filled automatically.<\/span>\r\n<\/pre><h4>Calculate stream object<a name=\"9dbe6000-ae15-4366-a377-1a4bfc21d7cd\"><\/a><\/h4><p>With the prepared elevation model, we can calculate the flow direction which is stored in a <tt>FLOWobj<\/tt> . These flow directions are the basis for deriving river networks stored in another object, the <tt>STREAMobj<\/tt>.<\/p><pre class=\"codeinput\">FD = FLOWobj(DEMf);\r\nS = STREAMobj(FD,<span class=\"string\">'minarea'<\/span>,1000);\r\n<\/pre><h4>Display water streams<a name=\"1fefb37f-99a0-479c-929c-2320a9f19c3b\"><\/a><\/h4><p>We can display the network with the <tt>plot<\/tt> command.<\/p><pre class=\"codeinput\">plot(S);\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/images\/loren\/2018\/TopoToolboxExampleLSSG_03.png\" alt=\"\"> <h4>Calculate water accumulation<a name=\"f3f746ac-a1da-4e6e-aa97-d33f2b923514\"><\/a><\/h4><p>Finally, the water accumulation in our network can be calculated using the <tt>FLOWobj<\/tt> .<\/p><pre class=\"codeinput\">A = flowacc(FD);\r\n<\/pre><h4>Display flow accumulation<a name=\"363a4097-229f-41ea-af23-377a73571521\"><\/a><\/h4><p>And the resulting water accimulation can be displayed with in a graph easily.<\/p><pre class=\"codeinput\">imageschs(DEM,dilate(sqrt(A),ones(5)),<span class=\"string\">'colormap'<\/span>,flowcolor, <span class=\"keyword\">...<\/span>\r\n    <span class=\"string\">'colorbarylabel'<\/span>,<span class=\"string\">'Flow accumulation [sqrt(# of pixels)]'<\/span>, <span class=\"keyword\">...<\/span>\r\n    <span class=\"string\">'ticklabel'<\/span>,<span class=\"string\">'nice'<\/span>);\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/images\/loren\/2018\/TopoToolboxExampleLSSG_04.png\" alt=\"\"> <h4>Next steps<a name=\"95272b67-bfb8-4f7f-b9b4-46cf08830e83\"><\/a><\/h4><p>So, why don&#8217;t you head over and try the area where you live? The command <tt>readopentopo<\/tt> can be used with the interactive switch <tt>readopentopo('interactive',true)<\/tt> to let you choose your area of interest freely.<\/p><p>You get a map window<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/images\/loren\/2018\/Bavaria_map.png\" alt=\"\"> <\/p><p>and can select your favorite area<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/images\/loren\/2018\/select_button.png\" alt=\"\"> <\/p><p>When you finish selecting the area in the map window of the interactive mode, you can confirm it by clicking a button. It works like a charm.<\/p><p>Let us know how this went for you <a href=\"https:\/\/blogs.mathworks.com\/loren\/?p=3087#respond\">here<\/a> !<\/p><h4>References<a name=\"8bc508a8-e7ab-4c76-bd9b-34ea70fce54d\"><\/a><\/h4><p>[1] <a href=\"https:\/\/topotoolbox.wordpress.com\/\">TopoToolbox &#8211; MATLAB-based software for topographic analysis (website, accessed: July 18th, 2018)<\/a><\/p><p>[2] <a href=\"https:\/\/de.mathworks.com\/company\/newsletters\/articles\/developing-a-matlab-toolbox-for-digital-elevation-model-analysis.html\">Developing a MATLAB Toolbox for Digital Elevation Model Analysis (article, accessed: August 27th, 2018)<\/a><\/p><p>[3] <a href=\"https:\/\/eu.desmoinesregister.com\/story\/news\/2018\/07\/17\/polk-county-des-moines-clive-flood-flooding-weather-ankeny-fema-emergency-iowa-damage-federal-ia\/791942002\/\">Iowa flooding: $16M in public damages reported statewide; officials remain hopeful for federal aid (article, accessed: July 18th, 2018)<\/a><\/p><p>[4] <a href=\"https:\/\/en.wikipedia.org\/wiki\/2013_European_floods\">2013 European floods, Wikipedia, (article, accessed: July 18th, 2018)<\/a><\/p><p>[5] <a href=\"https:\/\/www.theguardian.com\/environment\/climate-consensus-97-per-cent\/2018\/feb\/08\/climate-change-is-increasing-flood-risks-in-europe\">Climate change is increasing flood risks in Europe, The Guardian, (article, accessed: July 18th, 2018)<\/a><\/p><p>[6] <a href=\"https:\/\/de.mathworks.com\/matlabcentral\/fileexchange\/50124-topotoolbox\">TopoToolbox (File Exchange, accessed: July 18th, 2018)<\/a><\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_07116075324144958a506c252bdcf95f() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='07116075324144958a506c252bdcf95f ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 07116075324144958a506c252bdcf95f';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2018 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_07116075324144958a506c252bdcf95f()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2018b<br><\/p><\/div><!--\r\n07116075324144958a506c252bdcf95f ##### SOURCE BEGIN #####\r\n%% Introducing the TopoToolbox\r\n%\r\n% My guest blogger today is Sebastian Gross. He is an engineer in our\r\n% academia team in Munich, Germany, and works with our university customers\r\n% to make them successful in research and teaching. In today\u00e2\u20ac&#x2122;s post he\r\n% introduces <https:\/\/topotoolbox.wordpress.com\/ TopoToolbox>[1,2].\r\n\r\n%% Overview\r\n%\r\n% Thank you, Loren, for giving me this opportunity to write about <https:\/\/topotoolbox.wordpress.com\/ TopoToolbox>. This collection of functions offers quantitative \r\n% methods for the analysis of relief and flow pathways in digital elevation models while not using a GIS environment. \r\n% One application is to learn about flooding risks in a particular geographical area.\r\n%%\r\n% The idea to write a blog post about it came to me when reading news such as \u00e2\u20ac\u02dcFlooding has slammed every Iowa county since 1988, \r\n% some as many as 17 times\u00e2\u20ac&#x2122;[3]. These make you think. Even closer for me, severe floodings were reported in six German federal states \r\n% and seven other countries in 2013[4]. \r\n%%\r\n% Most of us have seen some degree of flooding happen - a street submerged in water, a flooded field, or a river that has left its \r\n% usual boundaries. Just this year on a private vacation trip my wife and I encountered a bridge which had collapsed due to a river\u00e2\u20ac&#x2122;s \r\n% force and we had to continue our approach to an archeological site on foot. Research suggests that the risk is increasing because \r\n% of climate change[5]. So, I was tempted to take a closer look at flooding.\r\n%%\r\n% A while back during the European Geoscience Union General Assembly (EGU) in Vienna, Austria, in April 2018, I met <https:\/\/de.mathworks.com\/matlabcentral\/profile\/authors\/870595-wolfgang-schwanghart Wolfgang Schwanghart> \r\n% who is a geomorphologist at the University of Potsdam in Germany. Wolfgang is one of the authors of TopoToolbox. I had previously met \r\n% the second author Dirk Scherler as well. Dirk works at the German Research Center for Geosciences (GFZ) in Potsdam and one of his \r\n% research fields is geomorphology. \r\n%%\r\n% TopoToolbox is available via File Exchange[6] as zip-File or from the project\u00e2\u20ac&#x2122;s website[1] in several formats including a toolbox \r\n% file (.mltbx) for simple installation and management. The toolbox comes with an introduction document in Live Script format, \r\n% which let\u00e2\u20ac&#x2122;s you easily move along the code sections, read the rich comments, and view the results inline.\r\n\r\n%% Importing data \r\n%\r\n% You can import topological data from opentopography.org with the command: \r\n%\r\n\r\nDEM = readopentopo(); \r\n\r\n%%\r\n% The process also returns a warning with additional information. We will run the suggested reprojection later.\r\n%%\r\n% However, the returned data is from the area in Fresno, California, if you do not specify anything else. By chance, \r\n% I passed the area a few years back, but I used data from the Bavarian Danube river area highlighted in the article[4].\r\n\r\n%% Loading Bavarian data set\r\n% \r\n% The dataset of southern Bavaria can be loaded with\r\n\r\nload('bavaria_dem.mat');\r\n\r\n%% Reprojection\r\n% \r\n% To prepare our data for use with TopoToolbox, I follow the warning message's advice and run |reproject2utm| .\r\n\r\nDEM = reproject2utm(DEM,90);\r\n\r\n%% Display data with and without hillshading\r\n% \r\n% The results so far can be displayed with a simple command |imagesc| .\r\n \r\nimagesc(DEM);\r\n\r\n%%\r\n% However, we can achieve better highlighting of ridges, slopes, and\r\n% mountains (hillshading) with |imageschs|\r\n\r\nimageschs(DEM);\r\n\r\n%% Optional sink filling\r\n% \r\n% Now, back to the original idea of looking at water pathways. Using the\r\n% |fillsinks| command,\r\n\r\nDEMf = fillsinks(DEM);\r\n\r\n\r\n% holes in the map are filled automatically.\r\n\r\n%% Calculate stream object\r\n% \r\n% With the prepared elevation model, we can calculate the flow direction\r\n% which is stored in a |FLOWobj| . These flow directions are the basis\r\n% for deriving river networks stored in another object, the |STREAMobj|.\r\n\r\nFD = FLOWobj(DEMf);\r\nS = STREAMobj(FD,'minarea',1000);\r\n\r\n%% Display water streams\r\n% \r\n% We can display the network with the |plot| command.\r\n\r\nplot(S);\r\n\r\n%% Calculate water accumulation\r\n% \r\n% Finally, the water accumulation in our network can be calculated using\r\n% the |FLOWobj| .\r\n\r\nA = flowacc(FD);\r\n\r\n%% Display flow accumulation\r\n% \r\n% And the resulting water accimulation can be displayed with in a graph easily.\r\n\r\nimageschs(DEM,dilate(sqrt(A),ones(5)),'colormap',flowcolor, ...\r\n    'colorbarylabel','Flow accumulation [sqrt(# of pixels)]', ...\r\n    'ticklabel','nice');\r\n\r\n%% Next steps\r\n%\r\n% So, why don\u00e2\u20ac&#x2122;t you head over and try the area where you live? The command\r\n% |readopentopo| can be used with the interactive switch |readopentopo('interactive',true)| to let you choose\r\n% your area of interest freely. \r\n\r\n%%\r\n% You get a map window \r\n\r\n%%\r\n%\r\n% <<Bavaria_map.png>> \r\n%\r\n\r\n%%\r\n%\r\n% and can select your favorite area \r\n\r\n%%\r\n%\r\n% <<select_button.png>>\r\n%\r\n\r\n%% \r\n% When you finish selecting the area in the map window of the interactive\r\n% mode, you can confirm it by clicking a button. It works like a charm.\r\n%\r\n% Let us know how this went for you\r\n% <https:\/\/blogs.mathworks.com\/loren\/?p=3087#respond here> !\r\n\r\n%% References\r\n%\r\n% [1] <https:\/\/topotoolbox.wordpress.com\/ TopoToolbox \u00e2\u20ac\u201c MATLAB-based\r\n% software for topographic analysis (website, accessed: July 18th, 2018)>\r\n%\r\n% [2]\r\n% <https:\/\/de.mathworks.com\/company\/newsletters\/articles\/developing-a-matlab-toolbox-for-digital-elevation-model-analysis.html Developing\r\n% a MATLAB Toolbox for Digital Elevation Model Analysis (article, accessed: August 27th, 2018)>\r\n%\r\n% [3]\r\n% <https:\/\/eu.desmoinesregister.com\/story\/news\/2018\/07\/17\/polk-county-des-moines-clive-flood-flooding-weather-ankeny-fema-emergency-iowa-damage-federal-ia\/791942002\/ Iowa flooding: $16M in public damages reported statewide; officials remain hopeful for federal aid (article, accessed: July 18th, 2018)>\r\n%\r\n% [4] <https:\/\/en.wikipedia.org\/wiki\/2013_European_floods 2013 European\r\n% floods, Wikipedia, (article, accessed: July 18th, 2018)>\r\n%\r\n% [5]\r\n% <https:\/\/www.theguardian.com\/environment\/climate-consensus-97-per-cent\/2018\/feb\/08\/climate-change-is-increasing-flood-risks-in-europe Climate change is increasing flood risks in Europe, The Guardian, (article, accessed: July 18th, 2018)>\r\n%\r\n% [6]\r\n% <https:\/\/de.mathworks.com\/matlabcentral\/fileexchange\/50124-topotoolbox TopoToolbox (File Exchange, accessed: July 18th, 2018)>\r\n\r\n##### SOURCE END ##### 07116075324144958a506c252bdcf95f\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"http:\/\/blogs.mathworks.com\/images\/loren\/2018\/TopoToolboxExampleLSSG_04.png\" onError=\"this.style.display ='none';\" \/><\/div><!--introduction--><p>My guest blogger today is Sebastian Gross. He is an engineer in our academia team in Munich, Germany, and works with our university customers to make them successful in research and teaching. In today&#8217;s post he introduces <a href=\"https:\/\/topotoolbox.wordpress.com\/\">TopoToolbox<\/a>[1,2].... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/loren\/2018\/10\/16\/introducing-the-topotoolbox\/\">read more >><\/a><\/p>","protected":false},"author":39,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[65],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/posts\/3087"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/comments?post=3087"}],"version-history":[{"count":2,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/posts\/3087\/revisions"}],"predecessor-version":[{"id":3091,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/posts\/3087\/revisions\/3091"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/media?parent=3087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/categories?post=3087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/tags?post=3087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}