精华内容
下载资源
问答
  •   地理空间元数据,即关于数据的数据,它在地理信息中用于描述地理数据集的内容、质量、表示方式、空间参照系、管理方式以及数据集的其他特征等,帮助和促进人们有效地定位、评价、比较、获取和使用地理相关数据,...

    1. 获取数据的元数据

      地理空间元数据,即关于数据的数据,它在地理信息中用于描述地理数据集的内容、质量、表示方式、空间参照系、管理方式以及数据集的其他特征等,帮助和促进人们有效地定位、评价、比较、获取和使用地理相关数据,它是实现地理空间数据集共享的核心内容之一。
      可以使用 GetFeatureCount() 函数获取一个图层的要素数量。但只适用于图层,不适用于数据源,因为数据源中的每个图层可以有不同数量的要素、集合类型、空间范围及属性等。
    图层的空间范围:上、下、左、右4个方向的最大和最小边界坐标构成的矩形,可以使用GetExtent()函数来获取图层的边界坐标,返回 (min_x, max_x, min_y, max_y) 的数字元组。
      例如:

    >>> import os
    >>> from osgeo import ogr
    >>> ds = ogr.Open(r'E:\Google chrome\Download\GIS with python\osgeopy data\osgeopy-data-washington\large_cities.geojson')
    >>> lyr = ds.GetLayer(0)
    >>> extent = lyr.GetExtent()
    >>> print(extent)
    (-122.66148376464844, -117.4260482788086, 45.638729095458984, 48.759552001953125)
    
    >>> lyr = ds.GetLayer(0)
    >>> extent = lyr.GetExtent()
    >>> print(extent)
    (-175.22056447761656, 179.21664709402887, -89.99999981438727, 78.21668438639699)
    >>> print('Upper left corner: {}, {}'.format(extent[0], extent[3]))
    Upper left corner: -175.22056447761656, 78.21668438639699
    >>> print('Lower right corner: {}, {}'.format(extent[1], extent[2]))
    Lower right corner: 179.21664709402887, -89.99999981438727
    

    空间范围

      获取图层的几何类型,用 GetGeoType() 函数返回一个整数值,不是可理解的字符串。
      OGR模块具有多个常量, 可以通过 GetGeoType() 函数将获取的数值与表中的数值进行对比,来检查它属于哪种数据类型。

    几何要素类型 OGR常量
    Point wkbPoint
    Mulitpoint wkbMultiPoint
    Line wkbLineString
    Multiline wkbMultiLineString
    Polygon wkbPolygon
    Multipolygon wkbMultiPolygon
    Unknown geometry type wkbUnknown
    No geometry wkbNone

      检查文件类型:

    # 交互式
    >>> lyr = ds.GetLayer(0)
    >>> print(lyr.GetGeomType())
    1
    >>> print(lyr.GetGeomType() == ogr.wkbPoint)   # 与常量进行比较,点数据
    True
    >>> print(lyr.GetGeomType() == ogr.wkbPolygon)  # 与常量进行比较,面数据
    False
    

      若图层有多种几何类型,则函数返回 wkbUnknown

    import sys
    from osgeo import ogr
    
    fn = r'E:\Google chrome\Download\global\ne_50m_populated_places.shp'
    ds = ogr.Open(fn,0)
    if ds is None:
        sys.exit('Could not open {0}.'.format(fn))
    lyr = ds.GetLayer(0)
    
    feat = lyr.GetFeature(0)  # 获取图层第一个要素
    print(feat.geometry().GetGeometryName())  # 获取几何类型,并返回名字
    
    POINT
    

    1.1 获取空间参考系统

      lyr.GetSpatialRef()

    >>> print(lyr.GetSpatialRef())
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AXIS["Latitude",NORTH],
        AXIS["Longitude",EAST],
        AUTHORITY["EPSG","4326"]]
    

    1.2 获取图层自身属性字段信息

      lyr.schema()

    >>> for field in lyr.schema:
        print(field.name, field.GetTypeName())
    
    SCALERANK Integer
    NATSCALE Integer
    LABELRANK Integer
    FEATURECLA String
    NAME String
    NAMEPAR String
    <snip>
    

    1.3 OGR库(补充)

    在这里插入图片描述


    2. 矢量数据写入

    import sys
    from osgeo import ogr
    
    # 打开写入的数据源
    ds = ogr.Open(r'E:\Google chrome\Download\global', 1) # 传入参数1,创建新的文件(.shp文件)
    if ds is None:
        sys.exit('Could not open folder.')
    
    # 获取shaefile文件
    in_lyr = ds.GetLayer('ne_50m_populated_places') # 将.shp命名,可以不带后缀
    
    # 若图层存在,则删除该图层
    if ds.GetLayer('capital_cities'):
        ds.DeleteLayer('capital_cities')
    
    # 创建一个点图层
    out_lyr = ds.CreateLayer('capital_cities',
                             in_lyr.GetSpatialRef(),
                             ogr.wkbPoint) # 图层名在文件夹中是唯一的
    out_lyr.CreateFields(in_lyr.schema)
    
    # 创建一个空要素
    out_defn = out_lyr.GetLayerDefn()
    out_feat = ogr.Feature(out_defn)
    for in_feat in in_lyr:
        if in_feat.GetField('FEATURECLA') == 'Admin-0 capital':
    
            # 复制几何要素和属性
            geom = in_feat.geometry()
            out_feat.SetGeometry(geom)
            for i in range(in_feat.GetFieldCount()):
                value = in_feat.GetField(i)
                out_feat.SetField(i, value)
    
            # 插入该要素
            out_lyr.CreateFeature(out_feat)
    
    # 关闭文件
    del ds
    

      CreateLayer(name,[srs], [geom_type], [option]):

    1. name:新建图层名。
    2. srs:新建图层空间参考系统,默认为空,表示未设置任何空间参考系统。数据如果没有空间参考信息,将难以确定要素在地球上的位置。 如KML只支持WGS84基准面。
    3. geom_type:几何常量类型,表示图层中要素的几何类型,默认为wkbUnknown。
    4. options:只适用于特定的矢量数据类型。

      基于已有.shp文件,创建一个新的.shp文件,并使用相同的空间参考系统。

    import sys
    from osgeo import ogr
    
    ds = ogr.Open(r'E:\Google chrome\Download\global',1)
    if ds is None:
        sys.exit('Could not open folder.')
        
    in_lyr = ds.GetLayer('ne_50m_populated_places')   #  获取shapefile文件
    
    if ds.GetLayer('captial_cities'):
        ds.DeleteLayer('captial_cities')
    
    # 创建一个点图层
    out_lyr = ds.CreateLayer('captial_cities',in_lyr.GetSpatialRef(),ogr.wkbPoint)
    out_lyr.CreateFields(in_lyr.schema)  #  返回属性字段定义列表
    
    # 创建一个空要素
    out_defn = out_lyr.GetLayerDefn()
    out_feat = ogr.Feature(out_defn)
    
    # 复制几何要素和属性
    for in_feat in in_lyr:
        if in_feat.GetField('FEATURECLA') == 'Admin-0 capital':  # 判断是否为首都城市
            geom = in_feat.geometry()
            out_feat.SetGeometry(geom)
            for i in range(in_feat.GetFieldCount()):
                value = in_feat.GetField(i)
                out_feat.SetField(i,value)
            out_lyr.CreateFeature(out_feat)
            
    del ds
    # ds.SyncToDisk
    

    结果展示

    2.1 创建新数据源

      创建新数据源的关键是正确使用驱动程序,且一种驱动程序只能处理一种类型的矢量数据。如使用GeoJSON驱动程序创建一个shp文件任然是创建一个GeoJSON文件。
      获取驱动程序
      方法一: 从已打开的数据集中获取

    from osgeo import ogr
    ds = ogr.Open(r'E:\Google chrome\Download\california\california_50m_wind_albers.shp')
    driver = ds.GetDriver()
    
    print(driver.name)
    
    ESRI Shapefile
    

      方法二:使用 OGR中GetDriverByName()函数,传递给它驱动程序的简称。可以使用:ogrinfo --formats 获得驱动程序。

    import sys
    from osgeo import ogr
    
    esri_fn = r'E:\Google chrome\Download\california'
    
    esri_driver = ogr.GetDriverByName('ESRI Shapefile')
    esri_ds = esri_driver.CreateDataSource(esri_fn)
    if esri_ds is None:
        sys.exit('Could not create {0}.'.format(esri_fn))
    
    ds = ogr.Open(r'E:\Google chrome\Download\global',1)
    
    if ds is None:
        sys.exit('Could not open folder.')
        
    in_lyr = ds.GetLayer('ne_50m_populated_places')
    
    if esri_ds.GetLayer('captial_cities'):
        esri_ds.DeleteLayer('captial_cities')
    
    out_lyr = esri_ds.CreateLayer('captial_cities',in_lyr.GetSpatialRef(),ogr.wkbPoint)
    out_lyr.CreateFields(in_lyr.schema)
    
    out_defn = out_lyr.GetLayerDefn()
    out_feat = ogr.Feature(out_defn)
    
    for in_feat in in_lyr:
        if in_feat.GetField('FEATURECLA') == 'Admin-0 capital':
            geom = in_feat.geometry()
            out_feat.SetGeometry(geom)
            for i in range(in_feat.GetFieldCount()):
                value = in_feat.GetField(i)
                out_feat.SetField(i,value)
            out_lyr.CreateFeature(out_feat)
    
    del esri_ds
    

    创建成功
      数据源和图层创建选项是完全不同的,使用数据源选项创建一个SpatialLite数据源,而不使用SQLite:

    import sys
    from osgeo import ogr
    
    json_fn = r'E:\Google chrome\Download\global'
    
    json_driver = ogr.GetDriverByName('GeoJSON')
    json_ds = json_driver.CreateDataSource(json_fn)
    if json_ds is None:
        sys.exit('Could not create {0}.'.format(json_fn))
    
    >>> from osgeo import ogr
    >>> driver = ogr.GetDriverByName('SQLite')
    >>> ds = driver.CreateDataSource(r'E:\Google chrome\earth.sqlite',['SPATIALITE=yes'])
    

    在这里插入图片描述

      注意:创建鑫都数据源时,不能覆盖现有的数据源。如果可能会覆盖,需要在创建之前删除就数据。所以要使用驱动程序删除现有数据源,而不能使用python内置函数。因为驱动程序可以确保所有必要的文件都被删除掉,如shp、dbf、shx等。
      方法:

    if os.path.exists(json_fn):
        json_driver.DeleteDataSource(json_fn)
    json_ds = json_driver.CreateDataSource(json_fn)
    if json_ds is None:
        sys.exit('Could not create {0}.'.format(json_fn))
    

      OGR例外,ogr.UseExceptions() 将在程序错误的地方自动报错。

    import sys
    import os
    from osgeo import ogr
    data_dir = r'E:\Google chrome\Download\california'
    
    # 开启例外
    ogr.UseExceptions()
    
    fn = os.path.join(data_dir, 'output', 'natural_earth_50m.sqlite')
    driver = ogr.GetDriverByName('SQLite')
    print('Doing some preliminary analysis...')
    
    try:
        # 如果文件已经存在,这里将会报错
        ds = driver.CreateDataSource(fn)
        lyr = ds.CreateLayer('layer')
    
    # 试着保存一部分数据
    except RuntimeError as e:
        # 输出错误信息,并继续
        print(e)
    
    print('Doing some more analysis...')
    

    2.2 新建属性字段

      通过FieldDefn构造函数提供名字和数据类型来创建一个字段。

    字段数据类型 OGR常量
    Integer OFTInteger
    List of integers OFTIntegerList
    Floating point number OFTReal
    String OFTString
    List of String OFTStringList
    Date OFTDate
    Date and time OFTDateTime

      创建一个基本字段定义后,使用它添加一个字段到图层前,并且可以添加一些其他的限制,比如浮点精度或者字段宽度。
      在shapefile文件中设置字段精度,必须设置字段宽度。

    import sys
    import os
    from osgeo import ogr
    data_dir = r'E:\Google chrome\Download\GIS with python\osgeopy data\osgeopy-data-washington\osgeopy-data'
    
    in_fn = os.path.join(data_dir, 'Washington', 'large_cities.shp')
    in_ds = ogr.Open(in_fn, 0)
    if in_ds is None:
        sys.exit('Could not open {0}.'.format(in_fn))
    in_lyr = in_ds.GetLayer(0)
    
    # 创建输出shp文件
    driver = in_ds.GetDriver()
    out_fn = os.path.join(data_dir, 'output', 'precision_test.shp')
    if os.path.exists(out_fn):
        driver.DeleteDataSource(out_fn)
    out_ds = driver.CreateDataSource(out_fn)
    if out_ds is None:
        sys.exit('Could not create {0}.'.format(out_fn))
    
    # 创建一个shp图层
    out_lyr = out_ds.CreateLayer('precision_test',
                                 in_lyr.GetSpatialRef(),
                                 ogr.wkbPoint)
    
    # 将name字段设置为宽度为6,但它将被展开。
    name_fld = ogr.FieldDefn('name', ogr.OFTString)
    name_fld.SetWidth(6)
    out_lyr.CreateField(name_fld)
    
    # 使用默认精度创建两个属性字段
    coord_fld = ogr.FieldDefn('X_default', ogr.OFTReal)
    out_lyr.CreateField(coord_fld)
    coord_fld.SetName('Y_default')
    out_lyr.CreateField(coord_fld)
    
    # 使用更小的精度创建两个属性字段
    # 创建并添加第一个属性字段
    coord_fld = ogr.FieldDefn('X_short', ogr.OFTReal)
    coord_fld.SetWidth(8)      # 设置字段宽度
    coord_fld.SetPrecision(3)  # 设置字段精度
    # 重用FieldDefn来创建第二个字段
    # 这里创建两个相同的字段定义对象
    # 使创建更加容易
    out_lyr.CreateField(coord_fld)
    coord_fld.SetName('Y_short')
    out_lyr.CreateField(coord_fld)
    
    # 使用更小的精度创建两个属性字段。
    coord_fld = ogr.FieldDefn('X_short', ogr.OFTReal)
    coord_fld.SetWidth(8)
    coord_fld.SetPrecision(3)
    out_lyr.CreateField(coord_fld)
    coord_fld.SetName('Y_short')
    out_lyr.CreateField(coord_fld)
    
    # 复制数据
    out_feat = ogr.Feature(out_lyr.GetLayerDefn())
    for in_feat in in_lyr:
        pt = in_feat.geometry()
        name = in_feat.GetField('NAME')
        out_feat.SetGeometry(in_feat.geometry())
        out_feat.SetField('Name', name)
        out_feat.SetField('X_default', pt.GetX())
        out_feat.SetField('Y_default', pt.GetY())
        out_feat.SetField('X_short', pt.GetX())
        out_feat.SetField('Y_short', pt.GetY())
        out_lyr.CreateFeature(out_feat)
    
    

    3. 更新数据

    3.1 改变图层定义

      根据数据类型的不同,可以添加、删除、更改字段来编辑图层定义。对于一个满意的字段定义,可以使用AlterFiledDefn函数用新字段替换现有字段:
    AlterFiledDefn(iField,filed_def, nFlags)

    1. AlterFiledDefn是改变的属性字段对应的索引
    2. filed_def是新属性字段的定义对象
    3. nFlags是一个整数,是表中一个或多个常量的总和
    需要更改的字段属性 OGR常量
    Field name only ALTER_NAME_FLAG
    Field type only ALTER_TYPE_FLAG
    Field width and/or precision only ALTER_WIDTH_PRECISION_FLAG
    All of the above ALTER_ALL_FLAG

      步骤 :创建一个包含新的属性的字段定义,找到现有字段索引,确定要使用的OGR常量。如将“Name”改为“CITY_NAME”:

      首先,查看原有的数据集。

    import sys
    import os
    import ospybook as pb
    from osgeo import ogr
    data_dir = r'E:\Google chrome\Download\GIS with python\osgeopy data\osgeopy-data-washington\osgeopy-data'
    
    original_fn = os.path.join(data_dir, 'Washington', 'large_cities.shp')
    new_fn = os.path.join(data_dir, 'Washington', 'large_cities2.shp')
    
    # 复制.shp文件
    pb.copy_datasource(original_fn, new_fn)
    
    # 打开复制的shp文件准备写入
    ds = ogr.Open(new_fn, 1)
    if ds is None:
        sys.exit('Could not open {0}.'.format(new_fn))
    lyr = ds.GetLayer(0)
    
    # 在做改变之前,先查看数据集
    print('Original attributes')
    pb.print_attributes(lyr, geom=False)
    
    

    数据集格式
    改变

      然后,改变字段属性

    # 获取图层中Name的所有相关属性信息
    # 创建新的文件
    # 定义并使用改变新的文件属性
    i = lyr.GetLayerDefn().GetFieldIndex('Name')
    fld_defn = ogr.FieldDefn('City_Name', ogr.OFTString)
    lyr.AlterFieldDefn(i, fld_defn, ogr.ALTER_NAME_FLAG)
    
    # 改变多个字段的多个属性信息
    # 改变POINT_X为X_coord,并设置精度为4
    # 创建新的字段定义时,使用的是原始字段宽度。如果设置宽度不是足够大,结果将错误
    # 所以需要使用与原始数据一样的字段宽度,这样会比较安全
    # 所以字段必须重写
    lyr_defn = lyr.GetLayerDefn()
    i = lyr_defn.GetFieldIndex('X')
    width = lyr_defn.GetFieldDefn(i).GetWidth()
    fld_defn = ogr.FieldDefn('X_coord', ogr.OFTReal)
    fld_defn.SetWidth(width)
    fld_defn.SetPrecision(4)
    flag = ogr.ALTER_NAME_FLAG + ogr.ALTER_WIDTH_PRECISION_FLAG
    lyr.AlterFieldDefn(i, fld_defn, flag)
    
    

    3.2 添加、更新和删除要素

      添加要素:首先基于字段创建一个空要素,填充它,然后,把它插入到该图层中去。

    # 为图层中的每一个要素添加一个唯一的ID
    lyr.ResetReading()
    lyr.CreateField(ogr.FieldDefn('ID', ogr.OFTInteger))
    n = 1
    for feat in lyr:
        feat.SetField('ID', n)
        lyr.SetFeature(feat)
        n += 1
    print('\nID has been added and precision has taken effect')
    pb.print_attributes(lyr, geom=False)
    

      删除要素:

    lyr.ResetReading()
    for feat in lyr:
        if feat.GetField('City_Name') == 'Seattle':
            lyr.DeleteFeature(feat.GetFID())
    print('\nSeattle deleted')
    pb.print_attributes(lyr, geom=False)
    

      回收空间:

    ds.ExecuteSQL('REPACK ' + lyr.GetName())
    ds.ExecuteSQL('RECOMPUTE EXTENT ON ' + lyr.GetName())
    print('\nDatabase packed')
    pb.print_attributes(lyr, geom=False)
    

    4. 例子

      1.使用默认精度创建json文件

    import sys
    import os
    from osgeo import ogr
    data_dir = r'E:\Google chrome\Download'
    
    shp_fn = os.path.join(data_dir, 'global', 'ne_50m_admin_0_countries.shp')
    shp_ds = ogr.Open(shp_fn, 0)
    if shp_ds is None:
        sys.exit('Could not open {0}'.format(shp_fn))
    shp_lyr = shp_ds.GetLayer(0)
    json_driver = ogr.GetDriverByName('GeoJSON')
    
    
    # 使用默认精度创建一个json文件
    # 创建数据源
    json_fn = os.path.join(data_dir, 'GIS with python', 'africa-default.geojson')
    if os.path.exists(json_fn):
        json_driver.DeleteDataSource(json_fn)
    json_ds = json_driver.CreateDataSource(json_fn)
    if json_ds is None:
        sys.exit('Could not create {0}.'.format(json_fn))
    
    # 创建无选择项的图层
    json_lyr = json_ds.CreateLayer('africa',
                                   shp_lyr.GetSpatialRef(),
                                   ogr.wkbMultiPolygon)
    
    # 写入数据
    shp_lyr.ResetReading()
    json_feat = ogr.Feature(json_lyr.GetLayerDefn())
    for shp_feat in shp_lyr:
        if shp_feat.GetField('CONTINENT') == 'Africa':
            json_feat.SetGeometry(shp_feat.geometry())
            json_lyr.CreateFeature(json_feat)
    del json_ds
    

      结果:
    在这里插入图片描述
    在这里插入图片描述

      2.使用精度为6,创建json文件

    import sys
    import os
    from osgeo import ogr
    data_dir = r'E:\Google chrome\Download'
    
    shp_fn = os.path.join(data_dir, 'global', 'ne_50m_admin_0_countries.shp')
    shp_ds = ogr.Open(shp_fn, 0)
    if shp_ds is None:
        sys.exit('Could not open {0}'.format(shp_fn))
    shp_lyr = shp_ds.GetLayer(0)
    json_driver = ogr.GetDriverByName('GeoJSON')
    
    
    # 使用精度为6,创建一个json文件
    # 用选择项COORDINATE_PRECISION创建一个json文件,并且设置精度为为6
    # 创建数据源
    json_fn = os.path.join(data_dir, 'GIS with python', 'africa-6digit.geojson')
    if os.path.exists(json_fn):
        json_driver.DeleteDataSource(json_fn)
    json_ds = json_driver.CreateDataSource(json_fn)
    if json_ds is None:
        sys.exit('Could not create {0}.'.format(json_fn))
    
    lyr_options = ['COORDINATE_PRECISION=6']
    json_lyr = json_ds.CreateLayer('africa',
                                   shp_lyr.GetSpatialRef(),
                                   ogr.wkbMultiPolygon,
                                   lyr_options)
    
    # 写入数据
    shp_lyr.ResetReading()
    json_feat = ogr.Feature(json_lyr.GetLayerDefn())
    for shp_feat in shp_lyr:
        if shp_feat.GetField('CONTINENT') == 'Africa':
            json_feat.SetGeometry(shp_feat.geometry())
            json_lyr.CreateFeature(json_feat)
    json_ds
    
    

      结果:
    在这里插入图片描述

      3.Bounding box

    import sys
    import os
    from osgeo import ogr
    data_dir = r'E:\Google chrome\Download'
    
    shp_fn = os.path.join(data_dir, 'global', 'ne_50m_admin_0_countries.shp')
    shp_ds = ogr.Open(shp_fn, 0)
    if shp_ds is None:
        sys.exit('Could not open {0}'.format(shp_fn))
    shp_lyr = shp_ds.GetLayer(0)
    json_driver = ogr.GetDriverByName('GeoJSON')
    
    # 使用选择项COORDINATE_PRECISION 和 WRITE_BBOX 创建一个json文件
    json_fn = os.path.join(data_dir, 'GIS with python', 'africa-bbox.geojson')
    if os.path.exists(json_fn):
        json_driver.DeleteDataSource(json_fn)
    json_ds = json_driver.CreateDataSource(json_fn)
    if json_ds is None:
        sys.exit('Could not create {0}.'.format(json_fn))
    
    lyr_options = ['COORDINATE_PRECISION=6', 'WRITE_BBOX=YES']
    json_lyr = json_ds.CreateLayer('africa',
                                   shp_lyr.GetSpatialRef(),
                                   ogr.wkbMultiPolygon,
                                   lyr_options)
    
    # Write some data.
    shp_lyr.ResetReading()
    json_feat = ogr.Feature(json_lyr.GetLayerDefn())
    for shp_feat in shp_lyr:
        if shp_feat.GetField('CONTINENT') == 'Africa':
            json_feat.SetGeometry(shp_feat.geometry())
            json_lyr.CreateFeature(json_feat)
    del json_ds
    

      结果:
    在这里插入图片描述

      4.创建一个新的例子

    import sys
    import os
    from osgeo import ogr
    data_dir = r'E:\Google chrome\Download'
    
    shp_fn = os.path.join(data_dir, 'global', 'ne_50m_admin_0_countries.shp')
    json_fn = os.path.join(data_dir, 'GIS with python', 'africa.geojson')
    
    # 打开输入文件
    shp_ds = ogr.Open(shp_fn, 0)
    if shp_ds is None:
        sys.exit('Could not open {0}'.format(shp_fn))
    shp_lyr = shp_ds.GetLayer(0)
    
    # 创建输出文件
    json_driver = ogr.GetDriverByName('GeoJSON')
    if os.path.exists(json_fn):
        json_driver.DeleteDataSource(json_fn)
    json_ds = json_driver.CreateDataSource(json_fn)
    if json_ds is None:
        sys.exit('Could not create {0}.'.format(json_fn))
    lyr_options = ['COORDINATE_PRECISION=6']
    json_lyr = json_ds.CreateLayer('africa',
                                   shp_lyr.GetSpatialRef(),
                                   ogr.wkbMultiPolygon,
                                   lyr_options)
    
    # 在图层中添加属性文件
    name_fld = ogr.FieldDefn('Name', ogr.OFTString)
    json_lyr.CreateField(name_fld)
    pop_fld = ogr.FieldDefn('Population', ogr.OFTInteger)
    json_lyr.CreateField(pop_fld)
    
    
    # 添加整型文件,及错误的添加字符串
    test_fld = ogr.FieldDefn('Test_field', ogr.OFTInteger)
    json_lyr.CreateField(test_fld)
    
    # 获取属性定义
    feat_defn = json_lyr.GetLayerDefn()
    
    # 创建输出特征并反复使用
    json_feat = ogr.Feature(feat_defn)
    
    for shp_feat in shp_lyr:
        if shp_feat.GetField('CONTINENT') == 'Africa':
    
            # 复制属性值到文件中
            name = shp_feat.GetField('NAME')
            pop = shp_feat.GetField('POP_EST')
            json_feat.SetField('Name', name)
            json_feat.SetField('Population', pop)
    
            # 在整型文件中放置字符串
            json_feat.SetField('Test_field', name)
    
            # 赋值几何形状
            json_feat.SetGeometry(shp_feat.geometry())
    
            # 将数据输入到geojson文件中
            json_lyr.CreateFeature(json_feat)
    
    del json_ds, shp_ds
    

      结果:

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 【实验描述】 本系列实验教程实验二讲述了栅格数据的数字化之前必须进行的操作--地理配准(地理配配准完整操作步骤),栅格地理配准和矢量空间校正都属于几何校正的...本实验以矢量数据的校正为例,演示ArcGIS中...

    ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据)

    【实验描述】

    本系列实验教程实验二讲述了栅格数据的数字化之前必须进行的操作--地理配准(地理配配准完整操作步骤),栅格地理配准和矢量空间校正都属于几何校正的内容,关于空间校正、地理配准、几何校正等概念对于初学者有一定的难度,有关概念的辨析,可以参照前面的文章:几何校正,正射校正,影像配准,辐射定标,辐射校正,大气校正,地形校正概念详解。本实验以矢量数据的校正为例,演示ArcGIS中矢量数据校正的完整流程及注意事项。


    一、实验内容

    1、地形图定义坐标系:矢量数据跟栅格数据一样,如果缺失坐标系统,应在校正之前添加一个预定义的坐标系统。

    2、地形图几何校正


    二、实验目的

    1、掌握空间校正的3种方法对比

    2、对数字测图的地形图进行几何校正


    三、实验数据

    1、测量专业数字地形图导出后的面状shp(实验六最终数据)

    2、地形图数字化.shp


    四、实验过程

    1、数据准备及加载空间校正工具条(Spatial Adjustment)

    空间校正工具条

    工具条中各个按钮的功能如下所示:

    空间校正工具条按钮详解

    2、加载地形图.dwg Polygon,并将其导出为shp

    dwg导出为shp

    3、为地形图.dwg Polygon定义坐标系CGCS2000

    选择CGCS2000输出坐标系

    4、新建一个工程,加载地形图数字化.shp

    5、校正操作

           空间校正变换常用于将数据从未定义空间参考的数字化仪或扫描仪的单位转换为实际坐标。同矢量数据编辑一样,需要开始编辑。

    (1)设置校正数据

    选择待校正数据图层

    (2)选择校正方法

           选择校正方法→变换-放射。各种方法对比如下:

    几何校正方法详解

    (3)选项

           切换到边匹配选项,设置源图层和目标图层。注意,两个图层的位置关系不能弄反。

    标题

    (4)建立位移连接

           在进行空间校正时,除需要选择特定的校正方法之外,还要建立待校正图形与参照图形之间的位置对应关系。选择空间校正工具条山的“建立位移连接”工具,依次添加至少4个控制点对应关系,如下图所示。

    建立空间位置对应关系

    (5)校正

           点击空间校正下拉菜单,点击校正,完成校正过程。

    (6)保存,停止编辑

           保存编辑,停止编辑器。

    展开全文
  • ________【多选题】以下布尔代数运算正确是( )【其它】返回 我校标志性建筑矢量图制作评分后无法再次提交修改文件【多选题】关于字符串,下列说法正确是( )【单选题】下列不是Python语言关键字是________...

    【单选题】以下选项中,哪一个是Python语言中代码注释使用的符号?________

    【多选题】以下的布尔代数运算正确的是( )

    【其它】返回 我校标志性建筑矢量图制作评分后无法再次提交修改文件

    【多选题】关于字符串,下列说法正确的是( )

    【单选题】下列不是Python语言关键字的是________

    【其它】请在45分钟内,完成建筑平面图的绘制。 要求: 图形数据准确; 标注、文字、图层设置正确; 标注清晰,图面美观。 提交:请用姓名+建筑平面图命名。 07.dwg

    【单选题】下面代码的输出结果是________ x=10 y=3 print(x%y,x**y)

    【其它】根据CAD原文件绘制别墅立面图:如图 别墅立面图002.dwg

    【单选题】Python中布尔形变量的值为________

    【多选题】Python 中对变量描述正确的选项是( )

    【多选题】关于 Python 语言的注释,以下选项中描述正确的是( )

    【单选题】下面________不是合法的的变量名。

    【单选题】字符串是一个连续的字符序列,用________方式打印出可以换行的字符串。

    【单选题】下列不合法的Python变量名是________

    【单选题】Python关系运算符中表示“不等于”的是哪个?________

    【多选题】以下对 Python 程序设计风格描述正确的选项是( )

    【单选题】已知 x = 3,那么执行语句 x += 6 之后,x的值为________

    【多选题】Python中的注释符有哪几种?( )

    【多选题】Python支持的数据类型有( )

    【其它】根据如图所示,绘制窗台相关图纸,并标注。

    【单选题】以下程序的输出结果是________ s = "python\n编程\t很\t容易\t学" print(len(s))

    【单选题】3*1**3 表达式输出结果为________

    【多选题】Python中的关系运算符有( )

    【简答题】身份认同是对自身的认知,当你对“我是谁”有个清晰的概念时,你就能对将来想要的生活有个较好的规划。请简述对自己的认识和未来的展望。

    【判断题】已知 x, y = 3, 5,那么执行x, y = y, x 之后,x的值为15。

    【其它】自选某一主题查阅文献(必须有英文文献),撰写关于特殊儿童动作发展或康复训练相关的 文献综述 。 主题围绕关键词: 特殊儿童( Special Children )、自闭症( Autism 、 autistic disorder 、 ASD )、多动症( attention deficit hyperactivity disorder 、 ADHD )、脑瘫 (cerebral palsy) 、 Learning disorder 等各类特殊儿童; 或运动康复( Exercise Rehabilitation ),作业治疗( occupational therapy ),物理治疗( Physical Therapy )等; 或粗大动作( Gross motor ),精细动作( Fine motor 、 fine movement ),平衡能力( Balance ability )、步态训练( gait training )、关节活动( joint motion ),针对各种特殊儿童的核心症状或问题行为等等; 或动作发展( motor development 、 movement 、 motion )、动作心理等。

    【多选题】关于Python语言数值操作符,以下选项中描述正确的是( )

    【多选题】下列哪些语句在Python中是合法的( )

    【其它】主题插画设计(1920*1080PX) 表情包设计(30个) 专业形象设计(10个) 三类任选其一,每一类都要有设计说明。

    【多选题】关于a or b的描述正确的有哪些( )

    【多选题】以下关于 Python 字符串的描述中,正确的是( )

    【单选题】9//2 表达式输出结果为________

    【单选题】给出如下代码: TempStr = "Hello World" 以下选项中可以输出“World”子串的是________

    【单选题】字符串是一个字符序列,例如,字符串s,从右侧向左第3个字符用________索引。

    【多选题】下列运算符的使用正确的有哪些( )

    【多选题】以下选项中,不符合 Python 语言变量命名规则的有( )

    【多选题】下列表达式的值为False的是( )

    【单选题】下面________不是Python合法的标识符

    【单选题】x 的 y 次方(xy) 以下表达式正确的是________

    【多选题】以下选项属于 Python 整数类型的是( )

    【多选题】Python的数字类型包括( )

    【多选题】下列合法的Python变量名是( )

    【单选题】下列表达式的运算结果是________ >>> a = 100 >>> b = False >>> a * b > -1

    【单选题】下面代码的执行结果是________ >>> x = 2 >>> x *= 3 + 5**2

    【单选题】下列________不是Python的数据类型。

    【多选题】关于 Python 的数字类型,以下选项中描述正确的是( )

    【多选题】Python中布尔变量的值为( )

    【单选题】关于 Python 语句 P = –P,以下选项中描述正确的是________

    【多选题】关于赋值语句的作用,错误的描述是( )

    【单选题】22 % 3 表达式输出结果为________

    展开全文
  • 有针对特定用例的扩展,例如语义搜索,用于将Weaviate集成到您选择的任何应用程序中的插件以及用于可视化数据的控制台。 GraphQL-RESTful-矢量搜索引擎-矢量数据库-神经搜索引擎-语义搜索-HNSW-深度搜索-机器学习-...
  • 我们在具有普通标量,自旋和矢量场含量以及任意相互作用紫外线完井中,计算了六维标准模型有效理论所有威尔逊系数树级贡献。 没有关于高能理论可重正则化假设。 这提供了一个经典完整紫外线/红外字典...
  • (1)每个进程在进程表中都有一个记录项,记录项包含一张打开文件描述符表,可将视为矢量,每个描述符占用一项,与每个文件描述符相关联是: a)文件描述符标志(close_on_exec) b))指向一个文件表项指针 ...

    file结构体、inode结构体和dentry结构体

    内核使用三种数据结构表示打开的文件:

    (1)每个进程在进程表中都有一个记录项,记录项包含一张打开的文件描述符表,可将视为矢量,每个描述符占用一项,与每个文件描述符相关联的是:
    a)文件描述符标志(close_on_exec)
    b))指向一个文件表项的指针
    (2)内核为所有打开文件维持一张文件表,每个文件表项包含:
    a)文件状态标志(读写等等)
    b)当前文件偏移量
    c)指向该文件V节点表项的指针
    (3)每个打开文件(或设备)都有一个V-node结构。v节点包含了文件类型和对此文件进行各种操作的函数指针。对于大多数文件V节点还包含文件的i节
    点(索引节点)。这些信息是在打开文件时从磁盘上读入内存的。对于linux没有V节点。
    1、file结构体
    struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。
    它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,
    struct file的指针通常被命名为file或filp。如下所示:
    struct file {
            union {
                 struct list_head fu_list; 		文件对象链表指针linux/include/linux/list.h
                 struct rcu_head fu_rcuhead; 	RCU(Read-Copy Update)是Linux 2.6内核中新的锁机制
            } f_u;
            struct path f_path;  			包含dentry和mnt两个成员,用于确定文件路径
            #define f_dentry  f_path.dentry  	f_path的成员之一,当前文件的dentry结构
            #define f_vfsmnt  f_path.mnt  		表示当前文件所在文件系统的挂载根目录
            const struct file_operations *f_op; 	与该文件相关联的操作函数
            atomic_t  f_count; 			文件的引用计数(有多少进程打开该文件)
            unsigned int  f_flags;  		对应于open时指定的flag
            mode_t  f_mode; 			读写模式:open的mod_t mode参数
            off_t  f_pos; 				该文件在当前进程中的文件偏移量
            struct fown_struct f_owner; 		该结构的作用是通过信号进行I/O时间通知的数据。
            unsigned int  f_uid, f_gid; 		文件所有者id,所有者组id
            struct file_ra_state f_ra;  		在linux/include/linux/fs.h中定义,文件预读相关
            unsigned long f_version;
            #ifdef CONFIG_SECURITY
                 void  *f_security;
            #endif
            /* needed for tty driver, and maybe others */
            void *private_data;
            #ifdef CONFIG_EPOLL
            /* Used by fs/eventpoll.c to link all the hooks to this file */
            struct list_head f_ep_links;
            spinlock_t f_ep_lock;
           #endif /* #ifdef CONFIG_EPOLL */
           struct address_space *f_mapping;
    };
    2、inode结构体
    内核中用inode结构表示具体的文件。
    struct inode {
    	struct hlist_node    		i_hash;		哈希表 
    	struct list_head    		i_list;		索引节点链表
    	struct list_head    		i_sb_list;	
    	struct list_head    		i_dentry;	目录项链表
    	unsigned long        		i_ino;		节点号
    	atomic_t        		i_count;	引用记数
    	unsigned int        		i_nlink;	硬链接数
    	uid_t            		i_uid;		使用者id
    	gid_t            		i_gid;		使用者id组
    	dev_t            		i_rdev;   	//该成员表示设备文件的inode结构,它包含了真正的设备编号。实设备标识符
    	u64            			i_version;
    	loff_t            		i_size;		以字节为单位的文件大小
    	#ifdef __NEED_I_SIZE_ORDERED
    	seqcount_t        		i_size_seqcount;
    	#endif
    	struct timespec        		i_atime;	最后访问时间
    	struct timespec        		i_mtime;	最后修改(modify)时间
    	struct timespec        		i_ctime;	最后改变(change)时间
    	unsigned int        		i_blkbits;	以位为单位的块大小
    	blkcnt_t        		i_blocks;	文件的块数	
    	unsigned short          	i_bytes;	文件的字节数
    	umode_t            		i_mode;		访问权限控制
    	spinlock_t        		i_lock;    	/* i_blocks, i_bytes, maybe i_size */自旋锁
    	struct mutex        		i_mutex;
    	struct rw_semaphore    		i_alloc_sem;
    	const struct inode_operations   *i_op;
    	const struct file_operations    *i_fop;    <span style="white-space:pre">	</span>/* former ->i_op->default_file_ops */
    	struct super_block    		*i_sb;
    	struct file_lock    		*i_flock;
    	struct address_space    	*i_mapping;
    	struct address_space    	i_data;
    	#ifdef CONFIG_QUOTA
    	struct dquot        		*i_dquot[MAXQUOTAS];
    	#endif
    	struct list_head    		i_devices;
    	union {
    		struct pipe_inode_info  *i_pipe;
    		struct block_device    	*i_bdev;
     		struct cdev        	*i_cdev; <span style="white-space:pre">	</span>//该成员表示字符设备的内核的内部结构。当inode指向一个字符设备文件时,该成员包含了指向struct cdev结<span style="white-space:pre">							</span>//构的指针,其中cdev结构是字符设备结构体。
    	};
    	int            <span style="white-space:pre">			</span>i_cindex;
    	__u32            <span style="white-space:pre">		</span>i_generation;
    	#ifdef CONFIG_DNOTIFY
    	unsigned long        		i_dnotify_mask; 	/* Directory notify events */
    	struct dnotify_struct    	*i_dnotify; 		/* for directory notifications */
    	#endif	
    	#ifdef CONFIG_INOTIFY
    	struct list_head    		inotify_watches; 	/* watches on this inode */
    	struct mutex        		inotify_mutex;    	/* protects the watches list */
    	#endif
    	unsigned long        		i_state;
    	unsigned long        		dirtied_when;    	/* jiffies of first dirtying */
    	unsigned int        		i_flags;
    	atomic_t        		i_writecount;
    	#ifdef CONFIG_SECURITY
    	void            		*i_security;
    	#endif
    	void            		*i_private; 		/* fs or device private pointer */
    };
    inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。 
          做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。
          当我们用ls 查看某个目录或文件时,如果加上-i 参数,就可以看到inode节点了;比如ls -li lsfile.sh ,最前面的数值就是inode信息
    3、struct dentry结构体
    dentry 的中文名称是目录项,是Linux文件系统中某个索引节点(inode)的链接。这个索引节点可以是文件,也可以是目录。inode(可理解为ext2 inode)对应于物理磁盘上的具体对象,dentry是一个内存实体,其中的d_inode成员指向对应的inode。也就是说,一个inode可以在运行的时候链接多个dentry,而d_count记录了这个链接的数量。
    struct dentry { 
            atomic_t d_count; 		目录项对象使用计数器,可以有未使用态,使用态和负状态                                            
            unsigned int d_flags; 		目录项标志 
            struct inode * d_inode; 	与文件名关联的索引节点 
            struct dentry * d_parent; 	父目录的目录项对象 
            struct list_head d_hash; 	散列表表项的指针 
            struct list_head d_lru; 	未使用链表的指针 
            struct list_head d_child; 	父目录中目录项对象的链表的指针 
            struct list_head d_subdirs;	对目录而言,表示子目录目录项对象的链表 
            struct list_head d_alias; 	相关索引节点(别名)的链表 
            int d_mounted; 			对于安装点而言,表示被安装文件系统根项 
            struct qstr d_name; 		文件名 
            unsigned long d_time; 		/* used by d_revalidate */ 
            struct dentry_operations *d_op;	目录项方法 
            struct super_block * d_sb; 	文件的超级块对象 
            vunsigned long d_vfs_flags; 
            void * d_fsdata;		与文件系统相关的数据 
            unsigned char d_iname [DNAME_INLINE_LEN]; 存放短文件名
    };
    当访问文件时,首先open("",??), open函数通过系统调用sys_open进入内核空间, sys_open又调用do_sys_open,
    do_sys_open 通过get_unused_fd(),在当前进程空间内的struct file结构数组中,
    找一个空的struct file{}结构,并返回一个数组的下标号,之后do_sys_open又调用do_filp_open,do_filp_open调用nameidata_to_filp,
    nameidata_to_filp调用__dentry_open,在__dentry_open,通过关键语句,f->f_op = fops_get(inode->i_fop);
    得到了具有一个指向struct file_operations结构的指针的struct file结构指针,之后通过语句
        if (!open && f->f_op)
            open = f->f_op->open;
        if (open) {
            error = open(inode, f);
            if (error)
                goto cleanup_all;
        }
    调用我们编写的struct file_operations中的xxx_open()
    其他操作类似,
    read调用顺序如下: 
    read()->sys_read()->vfs_read()->{file->f_op->read}

    用户空间的read、write---linux系统调用---间接调用设备驱动程序中file_operations结构中的函数整个调用过程是这样一个顺序的。

    /proc/modules, /proc/devices, /dev
    /proc/modules : 模块加载列表,insmod(加载模块)后在此添加一行
    /sys/module : 添加一目录,insmod(加载模块)后在此添加一子目录
    /proc/devices : 注册设备列表,注册设备(register_chrdev_region,alloc_chrdev_region)后在此添加一行。--- 一般在模块加载时可以注册设备。
                            int register_chrdev_region(dev_t first, unsigned int count, char *name); name是设备的名字; 它会出现在 /proc/devices 和 sysfs 中。
                            如果用alloc_chrdev_region,因为动态分配,所以还需要读取/proc/devices文件以获得Linux内核分配给该设备的主设备号。
    /dev/* : 设备节点,mknod(创建设备节点)后在此添加一子目录。
                            如mknod /dev/ttyS0 c 4 64,用户通过此设备名来访问你的驱动。使用上面得到的主设备号。
                            mknod Name { b | c } Major Minor
    (1)加载模块可能注册设备,也可能不注册设备;
    (2)注册的设备(即设备驱动程序)可以对应多个设备;
    (3)“加载模块的名字”可以和“注册的设备的名字”没有任何关联;只依赖于动态模块中注册设备时传入的参数name。
    (4)而且/proc/devices和/dev下的名字也可以完全不同,只依赖于“主设备号”关联二者的关系;
    (5)/dev下还有其他设备;

    cat /proc/modules
    nfs 228929 13 - Live 0xf929e000 -------- 模块名,占用内存,加载次数,是否可用,起始地址?
    lockd 61257 2 nfs, Live 0xf91c8000
    fscache 20321 1 nfs, Live 0xf8cf9000
    nfs_acl 7617 1 nfs, Live 0xf8a6b000
    查看主设备号cat /proc/devices
    Character devices:
    1 mem
    4 /dev/vc/0
    4 tty
    4 ttyS

    展开全文
  • 在正式开始之前,我们先来了解一些关于像素基础知识。计算机将图片以像素形式存储,这就像马赛克一样。如果像素太大,很难制作光滑边缘和曲线。相反,我们使用像素越多越小,看起来就会越平滑,或者说像素化...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    31 习题9 排序------------------------------------------------------------------------------------34 第1部分 C++基本知识 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学...
  • 对格式的支持很重要,既要能够读取“野外”发现的数据,又要保持对旧格式数据的访问。 因为那里有很多旧数据,所以我们看到需要流行格式的阅读器的开放实现。 目标是创建一组有效且强大的ImageIO插件,可以独立分发...
  • 我们还表明,一旦选择了适当的初始条件,就有可能获得关于质子结构功能以及在质子靶标上独家产生J /ψ矢量介子的横截面的HERA数据的合理描述。 。 作为解决方案的进一步应用,我们计算了依赖于冲击参数的魏兹萨克-...
  • § 1.3 关于自顶向下系统设计方法 ............................................................................5 § 1.4 关于应用 VHDL EDA 过程............................................................
  • 使用 arcgis 绘制专题地图重要步骤

    千次阅读 2019-12-17 20:51:37
    项目描述:根据中国的省市县的矢量数据,以及不同的省份的人口信息,文化程度,企业分布,消费与住房的 Excel 表格,绘制人口密度分布的专题地图, 一、 绘制人口密度分布的专题地图 1.数据的准备 (1)有关于绘图...
  • 一个虚幻引擎Euro Filter插件 ...1€滤波器在 , 和中进行了描述:一种用于过滤噪声信号精确且响应算法,特别适用于交互式系统。 一个非常不错可以尝试。 可用过滤类型 C ++: 双倍 矢量 FQuat 脚踏车
  • 一、关于shapefile 关于shapefile的局限性,可以参考这篇文章:https://blog.csdn.net/yaoxiaochuang/article/details/52465335 ...Shapefile文件是描述空间数据的几何和属性特征的非拓扑实体矢量数据结构的...
  • 谷歌地图瓦片在国家测绘局要求是进行了偏移处理,人称“火星坐标系GCJ_02”,道路数据是WGS-84坐标系下经纬度坐标,现在知道WGS-84向GCJ_02转换公式,需要对道路矢量数据进行坐标转换和偏移批处理。...
  • 1.问题描述:如图1,设置好渔网必要参数,输出目录为gdb里的矢量图层,(行列数比较大,渔网地理范围较小),输出格网大小不一致(如图2)。而其他参数保持不变,只将输出改为shp格式,则渔网大小一致(如图3)。图1...
  • Shapefile文件格式介绍

    2021-04-29 21:05:48
    Shapefile文件格式是一种矢量图形格式,它能够保存几何图形的位置和相关属性,但是它没法存储地理数据的拓扑信息,所以shapefile文件经常是和其他文件一起使用,本文主要关注shapefile文件结构以及如何读取shapefile...
  • 前言 大家应该都有所了解,下面就简单介绍下Numpy,NumPy(Numerical Python)是一个用于科学计算第三方的Python包。 NumPy提供了许多高级的数值编程工具,如... 描述这些数据的元数据(metadata) 数组(即矩阵)的维度
  • 5.9.3 Torrance-Sparrow关于粗糙表面模型 374 5.9.4 与波长相关菲涅耳项 377 5.9.5 颜色转变 378 5.9.6 光源物理特性 379 5.10 透明 380 5.10.1 透明材料折射效果 381 5.10.2 简单透明模型 382 ...
  • 结果表明,可以通过一组五个SO(3)旋转不变观测值来描述矢量粒子衰变中的一般Dilepton角分布(考虑到奇偶性违反项)。 这些可观测量是作为强子张量(密度矩阵)的... 执行关于Z和J /ψ衰减的可用数据的不变量计算。
  • flash shiti

    2014-03-14 10:32:41
    14. 矢量图形用来描述图像是: □ A. 直线 □ B. 曲线 □ C. 色块 □ D. A 和B 都正确 15. 下列那几个属性是flash mx 不建议使用属性 □ A. scroll □ B. maxscroll □ C. _droptarget □ D. _highquality 16. ...
  • Wince 打印 Pcl3 5语言大全

    热门讨论 2010-04-07 19:55:07
    它提供了一些与PostScript语言相似功能,开始支持矢量字库和矢量图形描述,实现了WYSIWYG(What You See Is What You Get, 所见即所得),PCL5中也使用了各种压缩技术来减小数据量,加快数据传输。 PCL5e开始支持...
  • 仅支持英文、人民日报语料处理工具集、一些关于自然语言基本模型、基于14W歌曲知识库问答尝试--功能包括歌词接龙and已知歌词找歌曲以及歌曲歌手歌词三角关系问答、基于Siamese bilstm模型相似句子判定模型并...
  • [Oracle.11g权威指南(第2版)].谷长勇.扫描版.pdf

    千次下载 热门讨论 2013-06-23 21:16:09
    12.4.6 删除表空间中无数据的数据文件 298 12.4.7 数据文件的自动扩展设置 298 12.5 管理撤销表空间(UNDO) 299 12.5.1 撤销表空间的作用 299 12.5.2 与撤销表空间有关的参数 300 12.5.3 表空间的基本操作 301 12.6 ...
  • 数学建模例题

    2013-09-09 17:02:52
    附件中定标数据文件k_temp.txt给出了灰度数据与温度数据的转换关系,k_temp.txt内有1024个实型数,依次是图象灰度数据为0到1023所对应的K氏温度值,灰度值为 -1时对应的是地球以外的探测点。[注:地球是被探测温度的...
  • 事务处理原理 第2版

    热门讨论 2012-12-30 10:49:38
    可帮助读者理解事务处理系统内部情况,并描述了它们工作原理以及如何最佳地使用它们。包括应用服务器体系结构、事务通信范式,以及事务故障和系统故障恢复机制。  《事务处理原理(第2版)》第1版发行以来...
  • 7.7.1关于规范化观察空间裁剪 7.7.2齐次坐标空间裁剪 7.8OpenGL中变换 7.8.1矩阵堆栈 7.8.2模型视图变换 7.8.3投影变换 7.8.4实例 第8章曲线与曲面 8.1基本概念 8.1.1曲线/曲面数学描述的...
  • 在2007年于台北举行会议上,DICOM委员会设置了一项关于植入工作项(Work Item),并将其分配给了第24工作组(外科)。 由于整形外科植入实际是一个需要策划植入,而且,其策划与经济效益关系紧密,因此,...

空空如也

空空如也

1 2 3
收藏数 58
精华内容 23
关键字:

关于矢量数据的描述