我来自python,所以我可能只是没有以正确的方式看待它.我想创建一个相当复杂的正则表达式,并能够按名称访问字段匹配.我似乎无法找到一个好例子.我设法得到的最接近的是:
package main
import (
"fmt"
"regexp"
)
var myExp = regexp.MustCompile(`(?P<first>\d+)\.(\d+).(?P<second>\d+)`)
func main() {
fmt.Printf("%+v", myExp.FindStringSubmatch("1234.5678.9"))
match := myExp.FindStringSubmatch("1234.5678.9")
for i, name := range myExp.SubexpNames() {
fmt.Printf("'%s'\t %d -> %s\n", name, i, match[i])
}
//fmt.Printf("by name: %s %s\n", match["first"], match["second"])
}
Run Code Online (Sandbox Code Playgroud)
注释掉的行是我期望访问python中的命名字段的方式.什么是相同的方式来做到这一点?或者,如果我需要将匹配转换为地图,那么制作然后访问地图最常用的方法是什么?
必须有更快的方法来替换价值,对吗?我有一个2D数组代表一个高程/水深测量网格.我想用NAN替换0以上的任何东西,这种方式超级慢:
for x in range(elevation.shape[0]):
for y in range(elevation.shape[1]):
if elevation[x,y] > 0:
elevation[x,y] = numpy.NAN
Run Code Online (Sandbox Code Playgroud)
看起来这是一个更好的方式!
我正在尝试学习emacs elisp并尝试编写一个小程序来连接到TCP/IP端口并处理返回的记录.在一种情况下,我将解析CSV数据,而在另一种情况下,我将解析JSON(例如来自GPSD,而json.el谢天谢地附带了emacs).我查看了echo-server示例,但我正在寻找一个客户端示例,该示例显示了与make-network-process和处理面向行的数据的连接.它不是http,所以我不能同时使用url-retrieve-retrieve.
我的elisp技能非常弱,所以我正在寻找真正基本的例子.
谢谢!
使用lxml处理xml文档中某些节点上缺少命名空间的最佳方法是什么?我是否应首先修改所有无命名节点以添加"gmd"名称,然后将树属性更改为http://www.isotc211.org/2005/gmd为"gmd"?如果是这样,有没有一个干净的方法来做lxml或其他相对干净/安全的东西?
from lxml import etree
nsmap = charts_tree.nsmap
nsmap.pop(None) # complains without this on the xpath with
# TypeError: empty namespace prefix is not supported in XPath
len (charts_tree.xpath('//*/gml:Polygon',namespaces=nsmap))
# 1180
len (charts_tree.xpath('//*/DS_DataSet',namespaces=nsmap))
# 0 ... Bummer!
len (charts_tree.xpath('//*/DS_DataSet'))
# 0 ... Also a bummer
Run Code Online (Sandbox Code Playgroud)
例如http://www.charts.noaa.gov/ENCs/ENCProdCat_19115.xml
<DS_Series xmlns="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gsr="http://www.isotc211.org/2005/gsr" xmlns:gss="http://www.isotc211.org/2005/gss" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd">
<composedOf>
<DS_DataSet>
<has>
<MD_Metadata>
<parentIdentifier>
<gco:CharacterString>NOAA ENC Product Catalog</gco:CharacterString>
</parentIdentifier>
...
<EX_BoundingPolygon>
<polygon>
<gml:Polygon gml:id="US1AK90M_P1">
<gml:exterior>
<gml:LinearRing>
<gml:pos>67.61505 -178.99979</gml:pos>
<gml:pos>73.99999 …Run Code Online (Sandbox Code Playgroud) 澄清:我在某种程度上忽略了关键方面:不使用os.system或subprocess - 只是python API.
我正在尝试转换NOAA GTX偏移网格的一部分以进行垂直基准转换,而不是完全遵循如何在GDAL中使用python执行此操作.我想采用一个网格(在这种情况下是一个Bathymetry归属网格,但它可能是一个geotif)并将其用作我想要做的模板.如果我能做到这一点,我觉得它将极大地帮助人们使用这种类型的数据.
这就是我所拥有的绝对无效的东西.当我在生成的目标数据集(dst_ds)上运行gdalinfo时,它与源网格BAG不匹配.
from osgeo import gdal, osr
bag = gdal.Open(bag_filename)
gtx = gdal.Open(gtx_filename)
bag_srs = osr.SpatialReference()
bag_srs.ImportFromWkt(bag.GetProjection())
vrt = gdal.AutoCreateWarpedVRT(gtx, None, bag_srs.ExportToWkt(), gdal.GRA_Bilinear, 0.125)
dst_ds = gdal.GetDriverByName('GTiff').Create(out_filename, bag.RasterXSize, bag.RasterYSize,
1, gdalconst.GDT_Float32)
dst_ds.SetProjection(bag_srs.ExportToWkt())
dst_ds.SetGeoTransform(vrt.GetGeoTransform())
def warp_progress(pct, message, user_data):
return 1
gdal.ReprojectImage(gtx, dst_ds, None, None, gdal.GRA_NearestNeighbour, 0, 0.125, warp_progress, None)
Run Code Online (Sandbox Code Playgroud)
示例文件(但它们重叠的任何两个网格,但在不同的投影中都会这样做):
命令行等同于我正在尝试做的事情:
gdalwarp -tr 2 -2 -te 369179 4773093 372861 4775259 -of VRT -t_srs EPSG:2960 \
MENHMAgome01_8301/mllw.gtx mllw-2960-crop-resample.vrt
gdal_translate mllw-2960-crop-resample.{vrt,tif}
Run Code Online (Sandbox Code Playgroud) 我有一个struct timespec值的流.我想将它们转换为本机C++ 11表示,但我完全被chrono扭转了.什么是最好的目标以及如何从struct timespec或struct timeval到达那里,因为这是一个简单的转换,微秒对于这些时间是否足够好?我认为我想要达到这个目标,对吧?的std ::时辰:: SYSTEM_CLOCK :: time_point
在这种情况下,timespec是来自GPS的UNIX时间.是的,他们使用的是4字节秒(在内存中签名转换后的格式,然后写成无符号格式),它将被固定到2038年.
作为参考,我将把它添加到gsf的C++阅读器中
这可能是自行车脱落,但也许有一些有趣的东西让我失踪......
如果一个类初始化一个成员val,std::numeric_limits<double>::infinity()然后想要检查val是否已被更改为有效的东西(+/- inf在这里无效),这3种方法的权衡是什么,我是否错过任何其他有趣的方法来解决这个问题.(为了便于阅读,删除了const.)
bool IsInit() { return MinX != std::numeric_limits<double>::infinity(); } // a
bool IsInit() { return !std::isinf(MinX); } // b
bool IsInit() { return std::isfinite(MinX); } // c
Run Code Online (Sandbox Code Playgroud)
现在代码是C++ 03,但是如何使用C++ 11,C++ 14和C++ 17来改变选项.例如,使用C++ 17,这段代码可能就是这样std::optional<double> val.或者安静NaN是一个更安全的赌注,只是因为+/- inf在未来变得有效?
当我在阅读此代码的补丁时出现了这个问题:
为便于参考:
相关类型:
我有一个2D numpy数组,1.0e6作为无数据值.我想生成数据的直方图,虽然我已经成功,但这不是最好的方法.
from matplotlib import pyplot
import sys
eps = sys.float_info.epsilon
no_data = 1.0e6
e_data = elevation.reshape(elevation.size)
e_data_clean = [ ]
for i in xrange(len(e_data)):
val = e_data[i]
# floating point equality check for val aprox not equal no_data
if val > no_data + eps and val < no_data - eps:
e_data_clean.append(val)
pyplot.hist(e_data_clean, bins=100)
Run Code Online (Sandbox Code Playgroud)
似乎应该有一个干净的(和更快的一个衬垫为此).在那儿?
我在组织模式文件中有"[16]",这是你在ipython shell中看到的文本.如何转义该文本以使其不生成组织模式脚注?它在一个示例块中很好,但在一般文本中没有.第一个[16]是麻烦,到目前为止我尝试过的所有内容都没有在导出文件时在html输出中产生直接的正常"[16]".
#+BEGIN_SRC python
def setfrequency():
print 'Setting frequency'
# Write code here to set the frequency
setfrequency()
#+END_SRC
# This next line is the footnote problem
Run it again and you should see this, but the command number [16]
will be different for you:
#+BEGIN_EXAMPLE
In [16]: run sonar # This does not export as a footnote.
Setting frequency
#+END_EXAMPLE
Run Code Online (Sandbox Code Playgroud)
谢谢!
如果我在组织模式文档中写关于emacs org-mode,我该如何正确地逃避示例.例如
#+BEGIN_EXAMPLE
#+BEGIN_EXAMPLE
* This is a heading
#+END_EXAMPLE
#+END_EXAMPLE
Run Code Online (Sandbox Code Playgroud)
应该表明
#+BEGIN_EXAMPLE
* This is a heading
#+END_EXAMPLE
Run Code Online (Sandbox Code Playgroud)
但我需要以某种方式逃避#+ END_EXAMPLE.我在手册中找不到它.
谢谢!