我试图使用java- SRTM文件从这个URL批量下载zip文件,它需要用户名/密码下载,我使用以下java代码,它给了我以下异常
java.util.zip.ZipException: zip END header not found
at java.util.zip.ZipFile$Source.zerror(java.base@9-internal/ZipFile.java:1210)
at java.util.zip.ZipFile$Source.findEND(java.base@9-internal/ZipFile.java:1119)
at java.util.zip.ZipFile$Source.initCEN(java.base@9-internal/ZipFile.java:1126)
at java.util.zip.ZipFile$Source.<init>(java.base@9-internal/ZipFile.java:963)
at java.util.zip.ZipFile$Source.get(java.base@9-internal/ZipFile.java:933)
at java.util.zip.ZipFile.<init>(java.base@9-internal/ZipFile.java:213)
at java.util.zip.ZipFile.<init>(java.base@9-internal/ZipFile.java:145)
at java.util.zip.ZipFile.<init>(java.base@9-internal/ZipFile.java:159)
at toposwapper.rules.ZipFileDownloadAction.execute(ZipFileDownloadAction.java:29)
Run Code Online (Sandbox Code Playgroud)
这是我的java版本
java openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
Run Code Online (Sandbox Code Playgroud)
这是我用来下载的代码 -
URL url1 = null;
URLConnection conn = null;
InputStream inputs = null;
FileOutputStream out = null;
try
{
url1 = new URL(url);
conn = url1.openConnection();
conn.setDoInput(true);
conn.setDoOutput(false);
conn.setRequestProperty("file-name", output.getName());
conn.setRequestProperty("content-type","application/zip");
String userpass = …
Run Code Online (Sandbox Code Playgroud) 我已经阅读过以前的堆栈交换,用Java替换条件逻辑,例如带有状态/策略模式的IF/ELSE,但我不确定我的情况是否适合替换.以下是我看到的结果 - Java中的if语句的长列表以及将许多'if else'语句转换为更干净的方法
我本质上是在编写一个文件下载管理器,这些是我的IF/ELSE结构:
基本上我理解你将这四个条件作为哈希映射中的键,然后值是需要发出的"命令".但是我相信你仍然需要一个If/Else来决定在作为输入给出的键上调用什么动作.所以我没有看到好处.有人可以解释一下吗?
我正在尝试使用icc编译器在Ubuntu 14.04上从源代码构建cython,因为我的python是用Intel icc编译器编译的.
当我尝试使用pip3安装cython安装cython然后运行cython时出现以下错误
Traceback (most recent call last):
File "/usr/local/bin/cython", line 9, in <module>
load_entry_point('Cython==0.24', 'console_scripts', 'cython')()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 351, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2363, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2088, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/local/lib/python3.4/dist-packages/Cython/Compiler/Main.py", line 28, in <module>
from .Scanning import PyrexScanner, FileSourceDescriptor
ImportError: /usr/local/lib/python3.4/dist-packages/Cython/Compiler/Scanning.cpython-34m.so: undefined symbol: __intel_sse2_strchr
Run Code Online (Sandbox Code Playgroud)
如何使用icc编译器从源代码安装cython?
我试过这个并没有用
从cython目录(从github下载)
python3.4 setup.py CC = icc
我收到以下消息 -
/home/aa/libPython/cython/Cython/Distutils/build_ext.py:20: UserWarning:
Cython.Distutils.build_ext does not properly …
Run Code Online (Sandbox Code Playgroud) 我能够从源代码在Ubuntu 14.04上成功构建cython,如本SE问题所述/回答编译cython来自icc的源代码,我从这里下载了源代码 - Cython源代码下载.
编译cython的命令是
CC = icc LINKCC = icc python3.4 setup.py build
我附上了构建日志.它仍然使用gcc进行链接.以下是构建日志的示例.
看来CC = icc LINKCC = icc似乎没有将链接器更改为icc.它仍在使用x86_64-linux-gnu-gcc.当我设置环境变量LDFLAGS = -lirc时,环境变量被传递给gcc而不是icc.此外,当我在BuildExecutable.py中放置print语句时,它们不会被调用.
icc -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.4m -c /home/aswin/libPython/Cython-0.24/Cython/Plex/Scanners.c -o build/temp.linux-x86_64-3.4/home/aswin/libPython/Cython-0.24/Cython/Plex/Scanners.o
icc: command line warning #10006: ignoring unknown option '-fwrapv'
creating build/lib.linux-x86_64-3.4
creating build/lib.linux-x86_64-3.4/Cython
creating build/lib.linux-x86_64-3.4/Cython/Plex
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -lirc -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 …
Run Code Online (Sandbox Code Playgroud) 我在python中有这段代码
data = np.empty(temp.shape)
maxlat = temp.shape[0]
maxlon = temp.shape[1]
print(maxlat,maxlon)
for i in range(0,maxlat) :
for j in range(0,maxlon):
data[i][j] = p_temperature(pr,temp[i][j])
Run Code Online (Sandbox Code Playgroud)
当我在 Python 3.5 中运行此代码时,出现此错误
ValueError : setting an array element with a sequence
Run Code Online (Sandbox Code Playgroud)
的价值maxlat
就是181
和值maxlon
IS 360
。
temp
数组的形状是(181,360)
我也尝试了评论中的建议:
for i in range(0,maxlat) :
for j in range(0,maxlon):
data[i][j] = temp[i][j]
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的错误。
我想通过使用库中的Geod
类来计算两个lon/lat点之间的距离pyproj
.
from pyproj import Geod
g = Geod(ellps='WGS84')
lonlat1 = 10.65583081724002, -7.313341167341917
lonlat2 = 10.655830383300781, -7.313340663909912
_, _, dist = g.inv(lonlat1[0], lonlat1[1], lonlat2[0], lonlat2[1])
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-5-8ba490aa5fcc> in <module>()
----> 1 _, _, dist = g.inv(lonlat1[0], lonlat1[1], lonlat2[0], lonlat2[1])
/usr/lib/python2.7/dist-packages/pyproj/__init__.pyc in inv(self, lons1, lats1, lons2, lats2, radians)
558 ind, disfloat, dislist, distuple = _copytobuffer(lats2)
559 # call geod_inv function. inputs modified in place.
--> 560 _Geod._inv(self, inx, iny, inz, ind, radians=radians) …
Run Code Online (Sandbox Code Playgroud) 我有一个名为Coordinate的类,它包含两个属性 - 纬度和经度.我将它添加到ArrayList.现在我想获得这个ArrayList的最西部坐标.我想要一个有效的算法(因为我有6000个)坐标类.
java ×3
cython ×2
distutils ×2
icc ×2
python ×2
ubuntu-14.04 ×2
arraylist ×1
arrays ×1
download ×1
geospatial ×1
http ×1
if-statement ×1
java-9 ×1
numpy ×1
pyproj ×1
python-3.4 ×1
python-3.5 ×1
python-3.x ×1
state ×1
ubuntu-16.04 ×1