小编Jas*_*nM1的帖子

DocumentBuilder.parse()线程安全吗?

标准的Java 1.6 javax.xml.parsers.DocumentBuilder类是否安全?从多个线程并行调用parse()方法是否安全?

JavaDoc没有提到这个问题,但Java 1.4中同一类JavaDoc明确表示它并不意味着并发; 所以我可以假设在1.6中它是?

原因是我在ExecutorService中运行了数百万个任务,每次调用DocumentBuilderFactory.newDocumentBuilder()似乎都很昂贵.

java thread-safety

26
推荐指数
2
解决办法
1万
查看次数

使用Java发送和接收UDP数据包?

我做了一个程序,从客户端发送UDP数据包到服务器这里是发送器代码

import java.io.IOException;
import java.net.*;

/**
 *
 * @author hp
 */
public class JavaApplication9 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws UnknownHostException, SocketException, IOException  {
        // TODO code application logic here
        byte[] buffer = {10,23,12,31,43,32,24};
        byte [] IP={-64,-88,1,106};
        InetAddress address = InetAddress.getByAddress(IP);
        DatagramPacket packet = new DatagramPacket(
                buffer, buffer.length, address, 57
                );
        DatagramSocket datagramSocket = new DatagramSocket();
        datagramSocket.send(packet);
        System.out.println(InetAddress.getLocalHost().getHostAddress());


    }
}
Run Code Online (Sandbox Code Playgroud)

接收器代码功能是

public void run(){

    try{
        DatagramSocket serverSocket = new DatagramSocket(port); …
Run Code Online (Sandbox Code Playgroud)

java firewall udp

19
推荐指数
1
解决办法
10万
查看次数

使用KML在地图上显示名称

我可以使用KML显示多边形,圆形等.现在我想只使用KML显示一些名称.这可能吗 ?

kml google-earth

10
推荐指数
1
解决办法
2万
查看次数

如何根据视图边界在Cesium Map中向左或向右旋转

想要模仿CesiumJS应用程序中的左右箭头键,类似于Google Earth导航.按向右或向左箭头键应分别向右或向左旋转地球约5%的视图边界.如果缩小则它在很大程度上旋转并且放大旋转的程度较小.

已经查看了Viewer,Camera,Scene等的文档,但是如何做一些应该简单的事情并不明显.

能够向右或向左旋转固定量但是想要根据视图范围中的宽度旋转量.如何获得铯中视图的顶部,左侧,右侧,底部的最大范围?

var viewer = new Cesium.Viewer('cesiumContainer', {
  navigationHelpButton: false, animation: false, timeline: false
});
var camera = viewer.camera;
document.addEventListener('keydown', function(e) {
    setKey(e);
}, false);

function setKey(event) {  
 if (event.keyCode == 39) {  // right arrow 
  camera.rotateRight(Cesium.Math.toRadians(10.0));
 } else if (event.keyCode == 37) {  // left arrow
  camera.rotateLeft(Cesium.Math.toRadians(10.0));
 }
}
Run Code Online (Sandbox Code Playgroud)

要进行测试,请访问SandCastle应用并粘贴上面的javascript代码段.要激活键盘绑定,请单击全屏模式,箭头键将起作用.

或者,摄像机可用于访问positionCartographic,但这只是摄像机的制图位置,而不是视图边界.

  var positionCartographic = camera.positionCartographic;
  var height = positionCartographic.height;
  var lat = positionCartographic.latitude;              
  var lon = positionCartographic.longitude + Cesium.Math.toRadians(10.0);    
  camera.flyTo({
    destination: …
Run Code Online (Sandbox Code Playgroud)

rotation geospatial cesium

9
推荐指数
1
解决办法
1414
查看次数

使用 pyKML 检查和解析 KML

与此类似:使用 Python 从 KML BatchGeo 文件中提取坐标

但我想知道如何检查数据对象,以及如何对其进行迭代,并解析所有Placemark以获取coordinates.

下面是 KML 的样子,有多个<Placemark>标签。

示例 KML 数据

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
<Document id="...">
  <name>...</name>
  <Snippet></Snippet>
  <Folder id="...">
    <name>...</name>
    <Snippet></Snippet>
    <Placemark id="...">
      <name>....</name>
      <Snippet></Snippet>
      <description>...</description>
      <styleUrl>....</styleUrl>
      <Point>
        <altitudeMode>...</altitudeMode>
        <coordinates> 103.xxx,1.xxx,0</coordinates>
      </Point>
    </Placemark>
    <Placemark id="...">
      ...
    </Placemark>
  </Folder>
  <Style id="...">
    <IconStyle>
      <Icon><href>...</href></Icon>
      <scale>0.250000</scale>
    </IconStyle>
    <LabelStyle>
      <color>00000000</color>
      <scale>0.000000</scale>
    </LabelStyle>
    <PolyStyle>
      <color>ff000000</color>
      <outline>0</outline>
    </PolyStyle>
  </Style>
</Document>
</kml>
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,extract.py

from pykml import …
Run Code Online (Sandbox Code Playgroud)

python kml pykml

7
推荐指数
1
解决办法
8955
查看次数

如何将kml文件发送到Google地球,例如MyTracks(开源)呢?

我不知道你是否看过惊人的Mytrack更新,但它允许将一个kml文件发送到Google Earth应用程序并将其显示在Google应用程序中(当然,如果已安装).

在此输入图像描述

源代码在那里:http://code.google.com/p/mytracks/source/browse/

但我无法找到实现这一目标的方法.

我想我在这里找到了一些内容:http://code.google.com/r/jshih-mytracks3/source/browse/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java?specl = svn5178eb75934b7f0c4c23ec26b7d79a0787de18b8&R = 5178eb75934b7f0c4c23ec26b7d79a0787de18b8

else if (playTrack) {
        Intent intent = new Intent()
            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
            .putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
            .setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
            .setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
        startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

硬编码方式提供此代码:

    Intent intent = new Intent()
            .addFlags(
                    Intent.FLAG_ACTIVITY_CLEAR_TOP
                            | Intent.FLAG_ACTIVITY_NEW_TASK)
            .putExtra("com.google.earth.EXTRA.tour_feature_id","tour")
            .setClassName("com.google.earth", "com.google.earth.EarthActivity")
            .setDataAndType(Uri.fromFile(new File("/sdcard/test.kml")),
                    "application/vnd.google-earth.kml+xml");
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但是上面的代码只显示了与此代码相同结果的路径:

 Intent mapIntent = new Intent(Intent.ACTION_VIEW); 
    Uri uri1 = Uri.parse("file:///sdcard/test.kml"); 
    mapIntent.setData(uri1); 
    startActivity(Intent.createChooser(mapIntent, "Sample")); 
Run Code Online (Sandbox Code Playgroud)

我的目标是通过"播放"按钮获得相同的结果.

android kml google-earth android-intent

6
推荐指数
1
解决办法
4098
查看次数

从字符串获取IP地址(Groovy)

我想提取IP并将其返回.就像是

def getIPfromString ( myString ) {

  ..
  return IP 
}

IP = getIPfromString("ftp://192.168.13.108/720_prev")
print " IP Address : " + IP
Run Code Online (Sandbox Code Playgroud)

输出:

IP Address : 192.168.13.108
Run Code Online (Sandbox Code Playgroud)

groovy ip-address

6
推荐指数
2
解决办法
2998
查看次数

在 simplekml 中显示本地图像

我正在尝试使用simplekml将一堆地理标记照片放入 KML 文件(实际上是 KMZ 文件)中,以便在 Google Earth 中查看。我已经获得了要显示的位置,但是当我尝试将图像放入“描述”中时,因此当我单击图像出现的位置时,它不起作用。只有一张空白图像。我正在尝试使用此处显示的 addfile() 命令来完成此操作。我的代码如下所示:

import os, simplekml

path = r'C:\Users\as\Desktop\testpics'                     
    
kml = simplekml.Kml()

for (dirpath, dirnames, filenames) in os.walk(path):
    for filename in filenames:
        fullpath = os.path.join(dirpath, filename)
        try:
            Lat, Long, Alt = GetLatLong(fullpath) #Didn't include this function, but it appears to work
        except:
            Lat, Long, Alt = (None, None, None)
        if Lat: #Only adds to kml if it has Lat value.
            x, y = (FormatLatLong(Lat), FormatLatLong(Long)) #puts into decimal coords …
Run Code Online (Sandbox Code Playgroud)

python maps kml google-earth simplekml

6
推荐指数
1
解决办法
3869
查看次数

Java 录音和混音器设置

我在无线电数据模式解码程序中使用 javax.sound.sampled 包。要使用该程序,用户将无线电接收器中的音频输入到 PC 的线路输入中。用户还需要使用他们的混音器程序来选择线路作为录音输入。问题是有些用户不知道如何执行此操作,有时其他程序也会更改录音输入设置。所以我的问题是我的程序如何检测线路是否设置为录音输入?如果我的程序检测到录音输入设置不正确,是否可以更改录音输入设置?

谢谢你的时间。

伊恩

java javasound

5
推荐指数
1
解决办法
1400
查看次数

Cesium CZML:使用lat long alt

我想这对任何真正熟悉Cesium的CZML文件的人来说都是一个简单的问题.我只是尝试使用Cesium显示一系列lat/long/alt点作为飞行路径.有人能告诉我"位置"标签应该是什么样子吗?

除非我在错误的地方寻找,否则我没有看到很多CZML的例子.所以很难知道可以使用哪些标签以及如何使用它们(如果你弄错了,Java控制台就不会显示错误).

在Cesium网站上的Sandcastle CZML示例中,相关部分如下所示:

"position" : {
            "interpolationAlgorithm" : "LAGRANGE",
            "interpolationDegree" : 1,
            "epoch" : "2012-08-04T16:00:00Z",
            // Trimmed to just 2 points
            "cartesian" : [0.0, -2379754.6637012, -4665332.88013588, 3628133.68924173,
                           3894.996219574019, -2291336.52323822, -4682359.21232197, 3662718.52171165]
        }
Run Code Online (Sandbox Code Playgroud)

如果是两点,为什么有8个值?如果是ECEF坐标,我预计每点只有三个......

例如,当我尝试这个时,我在控制台中收到了一条"未被捕获的错误"消息...这不是很有用:

"cartographic" : [-1.472853549, 0.589580778, 1000,
                  -1.472962668, 0.589739552, 1000 ]
Run Code Online (Sandbox Code Playgroud)

根据文档,制图采用(长,纬,高)长,纬度为弧度,高度为米.

cesium czml

5
推荐指数
1
解决办法
2170
查看次数