网上以讹传讹的说法比较多,大多说称Spatialite Geometry为标准WKB格式,实际上按照官方文档解释并非如此 SpatiaLite internally stores geometry values using ordinary SQLite's BLOB columns in a format that is very closely related to WKB format but not 112,90,64,83,-57,-24,13,-10,97,92,64,41,61,2,-29,60,97,65,64,112,-47,63,0,107,-111,90,64,-2 对比二进制内容 分析WKB 111,90,64 LAST(最后一位,固定值) -2 结论 如果不想或者无法使用spatialite插件,直接截取sql3 Blob字节数组的[39- 倒数第二位],首位增加byteOrder,即为标准WKB 输出jts geometery 参考文档 SpatiaLite internal BLOB-Geometry format (gaia-gis.it): Well-Known Binary (WKB
而本文介绍的WKB方法,则可以解决上述问题。 WKB全程Well-Known Binary,它是一种二进制存储几何信息的方法。 WKB type表示几何类型。 虽然这个结构已经很基础,但是**Mysql的Geometry结构并不是WKB。准确的说,WKB只是Mysql的Geometry结构中的一部分。 所以WKB的Byte order字段值一定是1。 有了这些知识,我们就可以定义WKB类型的TypeHandler了。 然后申请比WKB大4个字节的空间,分别填入SRID和WKB。这样整个内存结构就匹配Mysql内部的Geometry内存结构了。
than five bytes") //first four bytes of the geometry are the SRID, //followed by the actual WKB wkbReader = new WKBReader //copy the byte array, removing the first four //SRID bytes val wkb = new Array[Byte](geometryAsBytes.length - 4) System.arraycopy(geometryAsBytes, 4, wkb, 0, wkb.length ) dbGeometry = wkbReader.read(wkb) dbGeometry.setSRID(srid) dbGeometry } Java版 public = new byte[geometryAsBytes.length - 4]; System.arraycopy(geometryAsBytes, 4, wkb, 0, wkb.length
five bytes") //first four bytes of the geometry are the SRID, //followed by the actual WKB { srid += (sridBytes(i) & 0xff) << (8 * i) } //use the JTS WKBReader for WKB = new Array[Byte](geometryAsBytes.length - 4) System.arraycopy(geometryAsBytes, 4, wkb, 0, wkb.length ) dbGeometry = wkbReader.read(wkb) dbGeometry.setSRID(srid) dbGeometry = new byte[geometryAsBytes.length - 4]; System.arraycopy(geometryAsBytes, 4, wkb, 0, wkb.length
2015年02月25日 _x86_64_ (64 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 123.14 0.42 1.53 1.55 41.99 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 59.23 13.14 10.14 0.76 100.10 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 135.03 80.47 64.34 1.05 100.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 122.44 143.71 119.34 0.85 100.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB
你们的但老师最近太忙啦,只能发一些做过的小工具给你们玩玩啦 Sub Dan() Dim fileName$ Dim Wkb As Workbook Dim Arr, iRow Excel 文件 (*.txt),*.txt") If fileName = "" Then Exit Sub Application.ScreenUpdating = 0 Set Wkb = Workbooks.Open(fileName) With Wkb.Sheets(1) iRow = .Cells(.Rows.Count, 1).End(3).Row Application.Transpose(ArrTmp) End If .Cells(1, 1).EntireRow.Delete End With Wkb.Close 0 Application.ScreenUpdating = 1 Set Wkb = Nothing End Sub 代码用法格式要求 1 txt文本文件 2 文本文件中的数据以逗号
using (ExcelPackage package = new ExcelPackage(fileInfo)) { ExcelWorkbook wkb = package.Workbook; //先删除结果表 if (wkb.Worksheets.Any(s => s.Name == newShtName )) { wkb.Worksheets.Delete(wkb.Worksheets[newShtName]); styleScope == StyleActivateScope.StyleWkb) { foreach (var sht in wkb.Worksheets else if (styleScope == StyleActivateScope.StyleSht) { var sht = wkb.Worksheets
wkB/s: 每秒写K字节数。是 wsect/s 的一半。 avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。 # iostat -xdk 1 10 | egrep "sda|Device" Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 70.30 0.43 32.87 8.64 11.17 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 1024.00 7.27 327.76 39.40 98.50 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 1024.00 7.24 322.26 51.79 98.40 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB
line2.coords[:][(0.0, 0.0), (0.0, 1.0), (1.0, 2.0)]常见格式转换>>> Point(1,1).wkt'POINT (1 1)'>>> Point(1,1).wkb >>> Point(1,1).wkb.encode('hex')'0101000000000000000000f03f000000000000f03f'>>>>>> Point(1,1).wkb.encode 下面是微信乞讨码:对于wkb>>> from shapely.wkb import dumps, loads>>> s = dumps(Point(1,2), hex=True)>>> s'0101000000000000000000F03F0000000000000040
{ if (Common.IsContineToRunQuery()) { Excel.Workbook wkb = Common.ExcelApp.ActiveWorkbook; string actShtName = wkb.ActiveSheet.Name; string wkbOpenPwd = string.Empty; string wkbFullPath = wkb.FullName; if (Path.GetExtension(wkbFullPath).ToLower() == ".xls" || wkb.HasPassword)//当是xls时,转换成xlsx或xlsm { if (wkb.HasVBProject) { wkbFullPath
/15/2021 _aarch64_ (64 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 9.07 0.23 13.09 1.39 0.03 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 3.68 0.00 3.68 1.20 3.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB rKB/s:The number of read requests that were issued to the device per second; wKB/s:The number of write
0.00 0.28 0.03 0.00 99.41 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 0.00 0.25 0.13 0.00 98.87 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 0.00 0.50 0.00 0.00 97.50 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 0.00 0.25 0.00 0.00 99.62 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB (需要计算) wkB/s: 每秒写K字节数.是 wsect/s 的一半.
btnConvertLinkPicSht_Click(object sender, RibbonControlEventArgs e) { try { var wkb File.Exists(wkb.FullName)) { UIMessageTip.ShowError("请先保存本工作薄后再操作。" var tmpWkbFilePath = Path.Combine(Path.GetTempPath(), Path.GetFileNameWithoutExtension(wkb.FullName )+"_链接图片版"+Path.GetExtension(wkb.FullName)); wkb.SaveCopyAs(tmpWkbFilePath);
0.01 0.00 0.00 0.04 0.00 99.95 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util 8.47 21.18 0.03 39.95 5.98 0.49 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB per second 没面发出的写入请求的数量 rkB/s: The number of kilobytes read from the device per second 以千字节每秒从设备读取数 wkB
var package = new ExcelPackage(new FileInfo(filePath))) { ExcelWorkbook wkb = package.Workbook; foreach (var itemSht in wkb.Worksheets) { if (isActWkb) { AddDataToResultSht(resultTable, wkb package.Save(); }// if (isActWkb) }//foreach (var itemSht in wkb.Worksheets
Point值构造MultiPoint 13 MultiPolygon() 从Polygon值构造MultiPolygon 14 ST_GeomFromWKB(), ST_GeometryFromWKB() 从WKB () 从WKB构造LineString 17 ST_MLineFromWKB(), ST_MultiLineStringFromWKB() 从WKB构造MultiLineString 18 ST_MPointFromWKB (), ST_MultiPointFromWKB() 从WKB构造MultiPoint 19 ST_MPolyFromWKB(), ST_MultiPolygonFromWKB() 从WKB构造MultiPolygon 20 ST_PointFromWKB() 从WKB构造点 21 ST_PolyFromWKB(), ST_PolygonFromWKB() 从WKB构造多边形 22 ST_GeomFromText() ST_GeometryN() 从几何集合中返回第N个几何 33 ST_AsGeoJSON() 从几何体生成GeoJSON对象 34 ST_AsBinary(), ST_AsWKB() 从内部几何格式转换为WKB
pip install xlrd 对excel文件中的数据进行读取 import xlrd FilePath = 'E:/PDBC/StudentInfo.xls' # 1.打开excel文件 wkb = xlrd.open_workbook(FilePath) # 2.获取sheet sheet = wkb.sheet_by_index(0) # 获取第一个sheet表['学生信息'] # 3. 方法获取操作游标 c = conn.cursor() """ 二、读取excel文件 """ FilePath = 'E:/PDBC/StudentInfo.xls' # 1.打开excel文件 wkb = xlrd.open_workbook(FilePath) # 2.获取sheet sheet = wkb.sheet_by_index(0) # 获取第一个sheet表['学生信息'] # 3.
直接读取时需要传入特殊格式的zip路径表达式(详见我以前撰写的geopandas系列教程「文件IO篇」),但在0.9.0版本中,当你的zip压缩包内只有单一图层的文件时,直接就可读取: 图2 2.2 新增对wkt与wkb 格式的直接支持 在以前版本的geopandas中,是没有直接的API来与wkt/wkb格式进行交互的,往往需要配合shapely中的相关功能。 而在这次的更新中针对GeoSeries对象新增了from_wkt()、from_wkb()、to_wkt()以及to_wkb()四种方法,使得我们直接就可以轻松完成格式转换: 图3 2.3 新增高度z
图2 2.2 新增对wkt与wkb格式的直接支持 在以前版本的geopandas中,是没有直接的API来与wkt/wkb格式进行交互的,往往需要配合shapely中的相关功能。 而在这次的更新中针对GeoSeries对象新增了from_wkt()、from_wkb()、to_wkt()以及to_wkb()四种方法,使得我们直接就可以轻松完成格式转换: ?
/17/2022 _x86_64_ (40 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 0.01 0.28 0.01 0.01 3.03 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 1.90 0.21 2.12 1.43 98.80 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB 1.71 0.20 2.04 1.02 99.50 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB rkB/s和wkB/s: 意为每秒读写的kB字节数。 avgrq-sz和avgqu-sz: 分别代表请求的扇区数和在设备队列中等待的请求数。通常这俩值越小越好。