本发明涉及一种基于开源空间数据库postgis的用地均质度计算方法,属于城市规划技术领域。
背景技术:
背景技术涉及到两个方面内容,分别为均质度计算过程、基于开源空间数据库postgis的用地均质度计算方法。
均质性是指城市地域在职能分化中表现出来的一种保持等质、排斥质的特性。由于这种均质性的影响,城市地域内会出现许多均质地域,各自承担差别明显的功能,即功能区。
一个良好的城市结构,其土地分异应处于混沌与有序之间:既有功能分区,又不绝然分异,每一个功能区都有一种主导职能,在每一个功能区中又能找到其他相关的用地职能。由于均质性是城市空间功能最重要的特征之一,目前已经广泛应用于城市规划的多个方向:
1.可以为城市规划设计提供基于地块的定量分析手段和指标;
2.计算得到的地块均质度数值指标能够在不同地块间进行类比分析;
3.为旧城区确定改造方向提供理论依据——提高主导职能的地块开发强度。
均质度的计算公式如下:
d=λ(1-h)
式中,d为均质度;λ为系数;h为信息论中的熵。
熵是信息论中度量随机事件在某项实验中的不确定程度概念,计算公式如下:
式中,h(x)表示随机变量x的熵;pi为x取xi的概率。熵值越大,不确定性越大;熵值越小,不确定性越小。
例:城市中有两块地块:地块ⅰ内65%是居住用地,15%是商业用地,20%是工业用地;
地块ⅱ内40%是工业用地,60%是居住用地。
可以用信息熵(x)来比较两地块的混乱程度:
h(ⅰ)=-0.65lg0.65-0.15lg0.15-0.20lg0.20≈0.385
h(ⅱ)=-0.40log0.40-0.60log0.60≈0.292
h(ⅰ)>h(ⅱ)
熵值越高,表明地块ⅰ混乱程度高,其均质程度差,均质度低。
因此可以依据下面公式计算单个地块的均质程度:
在计算城市现状地块的土地利用均质度时,对上述公式做出如下变换,令:
wi表示均质地域范围内第i种土地利用类型的占地面积,n为该地域范围具有的土地利用类型,pi表示第i种土地利用类型占该地域总面积的比例。
计算现状土地利用功能的均质度公式为:
依据该公式可以计算出城市现状土地利用功能的地块均质程度。因此,当某一地块中只有一种职能时,d取最大值1,表示该地块均质程度最高或混乱程度最低;d值越小则表示地块均质程度越低。
背景技术涉及的另一个技术是基于开源空间数据库postgis的用地均质度计算方法。
均质度的计算方法自提出以来已经被广泛使用,已有的实证研究说明其计算结果客观、科学和有效,且计算方法及过程近四十年以来保持基本稳定,可以认为是比较成熟的检验城市地域在职能上具体特征的测量方法和指标。
在此基础上,本发明的另一技术背景为基于gis软件的城市用地均质度计算过程。以往计算用地均质度,多以商业软件arcgis平台为主,中间部分流程调用其他软件进行行列转换,来进行熵的计算,基于arcgis平台的用地均质度计算方法步骤和本发明所述方法基本一致,但是在计算过程差异显著,以下先对基于arcgis平台中用地均质度的计算过程进行描述:
(1)构建现状城市土地利用类型矢量图形:通过arcgis软件将cad的城市现状用地dwg文件转成城市现状土地利用类型的shp文件,该形文件带有三维信息,会直接影响数据精度,但是arcgis软件无法直接删除面状多边形要素所带的三维信息;利用arcgis软件进行地块的拓扑关系校对检查,消除多边形的空间自相交。
(2)应用arcgis的创建渔网(createfishnet)工具创建一个由自定尺度的网格所组成的正方形网格要素层,覆盖现状用地的数据层。
(3)若生成的正方形网格要素层超出了土地利用数据层的边界,删除超出边界的网格。
(4)在正方形网格数据层的属性表中新建字段gid,给每个网格一个唯一的id码。
(5)利用标识(identity)工具,计算正方形网格数据层与现状用地数据层的几何交集。依据正方形网格数据层的网格边界将现状用地数据割成多个多边形,使正方形每个网格获得与之重叠的城市现状用地的用地类型属性,得到叠加后的多边形要素层。
(6)打开叠加后的多边形要素层属性表,新建面积字段,计算叠加后的多边形面积。
(7)应用融合(dissolve)工具,以正方形网格字段gid作为融合字段,融合用地类别的字段,得到融合同一网格内用地类别相同的要素层。
(8)计算每个正方形网格单元的各类用地百分比。
(9)将融合后多边形要素属性表导出,用python编程,进行行列转换,按熵的公式计算出每个网格单元的熵值。
(10)在arcgis软件中,通过正方形网格的id将python计算出的熵值关联到相应的正方形网格图形要素上,并进行专题制图。
技术实现要素:
技术问题:从研究背景可以看出,arcgis无法实现消除cad文件转到shp文件时所带的三维信息,以及在arcgis方便地进行行转列,实现数据透视的功能。本发明尽管遵循相似的计算流程,但是其计算方法相较以往效率大大提高,在此基础,本发明的另一技术背景是基于开源空间数据库postgis的用地均质度计算方法。对于用地均质度计算的优化主要体现在以下4个方面:
1.基于开源数据库。postgresql及其空间扩展模块postgis是开源数据库,软件容易获得,且基于数据库的数据处理运算相较常规汇总数据的计算效率大大提高;而arcgis是商业软件,需要额外购买,汇总数据量大时,运算较慢且过程繁琐。
2.基于同一软件平台。基于开源数据库postgresql及其空间扩展模块postgis的用地均质度计算过程均在postgresql这一个软件平台,而根据背景2的描述,常规方法在计算均质度时需要将arcgis与python相结合,将属性数据转出,在python中进行数据透视,计算熵值,再关联到空间正方形网格要素层上。因此基于开源数据库postgresql及其空间扩展模块postgis的用地均质度计算平台单一,利用postgresql进行数据汇总和统计,应用postgis高效地实现空间要素叠加分析,在同一软件平台上实现空间要素与属性要素的处理,效率更高,且不存中间过程的数据转入和转出。
3.基于多尺度。已有研究表明,城市土地均质度的计算结果具有显著的尺度效应:随着网格尺度缩小,城市主要的土地利用类型的均质度随之变小,相反,随着网格尺度变大,城市主要的土地利用类型的均质度也变大,不同的尺度下城市土地均质度计算结果差别很大。根据以往实证研究经验,对正方形网格尺度的选择需要根据研究区域和研究目的特点而确定。常规计算过程繁琐,当涉及多尺度调整的时候需要对计算过程逐一进行调整,耗时耗力,而基于开源数据库postgresql及其空间扩展模块postgis的用地均质度计算仅需调整st_squaregrid(float8size,geometrybounds)函数中的size参数,在调整不同网格尺度时操作很方便,改变了参数后,再将代码运行一下,可以快速方便得到不同尺度下的熵值大小。
4.基于不同网格类型。不同的网格类型对土地均质度也有一定影响,由于不同形状网格有各自其特点,因此,对网格形状的选择也需要根据研究区域和研究目的特点而确定。常规计算过程在涉及网格形状调整时,需要对计算过程逐一进行调整,会耗费大量时间,而基于开源数据库postgresql及其空间扩展模块postgis的用地均质度计算仅需调整生成的网格类型的函数就可,如将生成正方形网格类型的st_squaregrid函数改变成生成正六边形网格的st_hexagongrid函数,操作方便快捷。
城市现状地块的均质性研究有着广泛的应用,但其计算过程一般基于商业软件,费用高昂,特别对比较大的城市现状用地均质度计算,往往计算过程复杂,效率低下。本发明提出一种基于开源空间数据库postgis的用地均质度计算方法,克服以往技术中计算效率较低、计算过程复杂、软件昂贵等缺点,本发明可以较为快速高效地对地块的均质度进行计算。据发明人亲自测试,在对不同软件熟悉程度相同的前提下,使用常规方法和postgis平台计算同一块城市用地均质度,本方法的运算速度提升至少10倍以上,大大提高了城市均质度计算的效率。
技术方案:为了达到上述发明目的,本发明提供了一种基于开源空间数据库postgis的用地均质度计算方法,包括以下步骤:
步骤1:将城市现状用地要素层转入到postgis空间数据库中;
步骤2:创建网格多边形要素层;
步骤3:将地块要素层与网格多边形要素层进行空间叠加分析,获得叠加后的多边形;
步骤4:计算每个网格中面积占优的用地类型;
步骤5:计算出每个正方形网格均质度值。
进一步,所述步骤1包括以下步骤:
步骤1.1:将城市现状用地类型的shp文件转入到postgresql数据库中;
步骤1.2:使用sql查询转入现状用地的地块数量;
步骤1.3:使用postgis中的st_force2d函数清除步骤1.1从cad转换地块多边形的shp文件的三维信息,在此基础上使用st_makevalid对矢量数据进行有效性检查,消除多边形的空间自相交;
步骤1.4:使用st_union函数,按照用地性质分组,将相邻的同类用地进行合并;
步骤1.5:使用st_union函数,对整个地块要素层进行合并,应用st_convexhull函数生成该地块层的外接凸多边形要素层。
进一步,所述步骤2是以步骤1中生成的外接凸多边形为基础,创建网格多边形要素层。具体网格选择尺寸和形状根据城市特征和研究目的确定。
步骤2.1:根据地块特征和研究目的选择合适正方形网格大小,使用st_squaregrid函数生成网格多边形要素层;
步骤2.2:所生成的网格多边形超出了用地地块要素层的边界,将外接凸多边形要素层与正方形网格多边形要素层进行空间叠加,利用postgresqlcte表达式(递归)选择凸多边形范围内的网格多边形;
步骤2.3:计算每个网格多边形面积,生成每个网格多边形要素的编号作为其唯一标识码,至此,研究范围内正方形网格多边形要素层的属性表具有唯一标识码和面积两个属性字段。
进一步,所述步骤3包括以下步骤:
步骤3.1:将网格要素层与用地数据进行叠加,对叠加后生成的多边形要素层的同一网格内相同用地属性的多边形进行合并,计算叠加合并后的各多边形面积,并删除空要素;
步骤3.2:计算各网格内各类用地的百分比;
步骤3.3:叠加后生成多边形属性具有两个叠加多边形属性,获取网格多边要素层的标识码、面积、现状用地的用地性质、叠加后多边形面积,以及其在网格中的各类用地所占百分比属性。
进一步,所述步骤4包括以下步骤:
步骤4.1:计算出每个网格中面积最大的用地类型,获取每个网格中面积最大地块所对应的用地属性及其对应的网格标识码;
步骤4.2:通过网格标识码与网格多边形进行关联,获得每个网格中主导用地类型,在qgis中绘制专题图,获取每个网格中面积占优的用地类型。
进一步,所述步骤5包括以下步骤:
步骤5.1:将叠加后生成的多边形要素层按每个网格标识码,使用sum()filter()函数对用地属性所占的百分比进行行转列,生成属性数据表;
步骤5.2:对步骤5.1生成的数据表增加计算熵的字段,应用熵公式进行计算,更新属性值,将计算的熵值按网格标识码与网格单元相关联,并在qgis中进行网格单元的均质度数值的专题制图,得出每个网格均质度值并进行可视化表达。
有益效果:
相比以往技术,本发明可以快速高效地对地块的均质度进行计算,以及对地块的主导用地类型的确定,且计算过程中可以高效实现多尺度、多网格类型的选择;计算中所用软件开源免费,容易获取,且基于同一平台,计算效率高,有效地提高城市现状用地均质度的计算和可视化方法。
附图说明
图1为本发明实施例的方法流程图;
图2为本发明实施例使用postgresqlcte递归表达式实现正方形网格划分图;
图3为本发明实施例基于qgis绘制的网格主导用地类型专题图;
图4为本发明基于qgis绘制的网格用地均质度专题图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
如图所示,以下将结合某地块和附图来详细地说明本发明的技术方案。
如图1所示,基于开源空间数据库postgis的用地均质度计算方法,具体方法如下:
步骤1:构建现状城市现状用地多边形矢量要素层
步骤1.1:将城市现状用地shp文件转入到postgresql数据库中;将具有不同用地类型的现状用地地块的shp文件由shp2pgsql-gui工具转入到postgis空间数据库中,成为空间数据库中一个表e01_landuse。
步骤1.2:使用sql查询转入现状用地的地块数量是917个地块;
步骤1.3:由于原始数据矢量数据是从cad中转换成多边形的shp文件,存在三维信息,需要使用postgis中的st_force2d函数清除其三维信息,并在此基础上使用st_makevalid对矢量数据进行有效性检查,消除多边形的空间自相交。
步骤1.4:使用st_union函数,用用地性质分组,将相邻的同类用地进行合并生成表e02_union,地块数量由原来的917个地块减少到681个地块,为下一步的空间叠加提高了效率。
步骤1.5:使用st_union函数,对整个地块要素层进行合并,应用st_convexhull函数生成这个地块层的外接凸多边形表e03_region。
步骤2:根据案例城市特点,本案选用正方形、500m尺度的网格,创建网格多边形要素层:以生成外接凸多边形e03_region为对象,使用st_squaregrid函数创建500×500的正方形网格多边形要素层;所生成的网格多边形超出用地地块数据层的边界,使用外接凸多边形数据层与500×500的正方形网格多边形要素层进行空间叠加,选择凸多边形范围内的正方形网格多边形(500×500的正方形格网多边形由132个减少到125个网格);计算每个正方形网格多边形面积,并生成每个网格多边形要素的编号,作为每个正方形网格多边形的唯一标识码,获得研究范围内500×500的网格多边形要素层e04_grid,并具有唯一标识码和面积两个属性字。如图2所示,计算过程中,使用postgresqlcte表达式(递归)来实现上述功能。
步骤3:获取网格多边形和现状用地属性,具体过程如下:
步骤3.1:将500×500的网格多边形要素层与现状用地地块层进行叠加,对叠加后生成的多边形要素层的同一网格相同用地属性的多边形进行合并,计算叠加合并后的各多边形面积;
步骤3.2:计算各网格内各类用地的百分比,删除空要素,使原来叠加时生成的85125多边形减少到480个多边形要素层e05_overlayers;
步骤3.3:叠加后生成多边形属性具有两个叠加多边形属性,获取正方形网格多边要素层的标识码、面积、现状用地的用地性质、叠加后多边形面积,以及其在正方形网格中各类用地所占百分比属性。
步骤4:计算每个正方形网格中面积占优的用地类型,具体过程如下:
步骤4.1:计算出每个正方形网格中面积最大的用地类型,获取每个网格中面积最大地块所对应的用地属性及其对应的网格标识码;
步骤4.2:通过网格标识码与正方形网格多边形进行关联,获得每个500×500正方形网格中主导用地类型,在qgis中绘制专题图,如图3,获取每个网格中面积占优的用地类型。
步骤5:计算出每个正方形网格均质度值,具体过程如下:
步骤5.1:将叠加后生成的多边形要素层按每个正方形网格标识码,对各类用地所占的百分比进行行转列,生成数据表。
步骤5.2:对步骤5.1生成的要素表增加计算熵的字段,应用熵公式进行计算,更新属性值,将计算熵值按网格标识码与正方形网格单元相关联,并在qgis中进行网格单元均质度数值的专题制图,如图4,最终得出每个正方形网格均质度值。
1.一种基于开源空间数据库postgis的用地均质度计算方法,包括以下步骤:
步骤1:构建城市现状用地矢量多边形要素层;
步骤2:创建正方形网格多边形要素层;
步骤3:正方形网格多边形与现状用地多边形进行空间叠加,叠加生成的多边形具有正方形网格和现状用地两个多边形的属性;
步骤4:以面积占优法确定每个正方形网格的占优用地类别;
步骤5:计算出每个正方形网格均质度值。
2.根据权利要求1所述的基于开源空间数据库postgis的用地均质度计算方法,其特征在于,所述步骤1包括以下步骤:
步骤1.1:将城市现状用地的shp文件转入到postgis空间数据库中;
步骤1.2:使用sql语句查询转入现状用地的地块数量;
步骤1.3:使用postgis中的st_force2d函数清除步骤1.1原始多边形shp文件的三维信息,在此基础上使用st_makevalid函数对矢量多边形要素进行有效性检查,消除多边形要素的空间自相交;
步骤1.4:使用st_union函数,按照用地性质分组,将相邻的同类用地进行合并;
步骤1.5:使用st_union函数,对整个地块要素层进行合并,并使用st_convexhull函数生成该地块层的外接凸多边形要素层。
3.根据权利要求2所述的基于开源空间数据库postgis的用地均质度计算方法,其特征在于,所述步骤2包括:以外接凸多边形为基础,创建网格多边形要素层;
步骤2.1:根据地块特征和研究目的选择合适正方形网格大小,使用st_squaregrid函数生成网格多边形要素层;
步骤2.2:所生成的网格多边形超出了用地地块要素层的边界,将外接凸多边形要素层与正方形网格多边形要素层进行空间叠加,利用postgresqlcte表达式选择凸多边形范围内的网格多边形;
步骤2.3:计算每个网格多边形面积,生成每个网格多边形要素的编号作为其唯一标识码,至此,研究范围内正方形网格多边形要素层的属性表具有唯一标识码和面积两个属性字段。
4.根据权利要求3所述的基于开源空间数据库postgis的用地均质度计算方法,其特征在于,所述步骤3包括以下步骤:
步骤3.1:将正方形网格多边形要素层与现状用地要素层进行空间叠加,对叠加后生成的多边形要素层的同一网格内相同用地属性的多边形进行合并,计算叠加合并后的各多边形面积;
步骤3.2:计算各网格内各类用地的百分比,删除面积为0空要素,得到最终有效叠加多边形,该叠加多边形具有正方形网格多边形和现状用地多边形两个要素层的属性,其属性表包含正方形网格多边形要素层的标识码、面积、现状用地的用地性质、叠加后多边形面积,以及各类用地在网格中的面积百分比等属性。
5.根据权利要求4所述的基于开源空间数据库postgis的用地均质度计算方法,其特征在于,所述步骤4包括以下步骤:
步骤4.1:计算每个网格中面积最大的用地类型,获取每个网格中面积最大地块所对应的用地属性及其对应的正方形网格标识码;
步骤4.2:通过网格标识码与网格多边形进行关联,获得每个正方形网格中主导用地类型,在qgis中绘制专题图,获取每个网格中面积占优的用地类型并进行可视化表达。
6.根据权利要求5所述的基于开源空间数据库postgis的用地均质度计算方法,其特征在于,所述步骤5包括以下步骤:
步骤5.1:将叠加后生成的多边形要素层,按每个网格的标识码,对用地属性所占的百分比进行行转列,生成属性表;
步骤5.2:对步骤5.1生成的属性表增加计算熵的字段,应用信息熵公式进行计算,更新属性值,将计算的熵值按网格标识码与正方形网格单元相关联,并在qgis中进行网格单元的均质度数值专题制图,得出每个网格均质度值并进行可视化表达。
技术总结