PDF 文档屏幕上的几何测量工具

hii*_*ran 5 pdf software-recommendation

不确定是否存在满足这种特定需求的东西,但无论如何我都会尝试。我有一些 PDF 地图,我想知道是否有任何 PDF 查看器或类似的软件可以让我测量距离,并使用指南针确定方向。

我唯一能想到的就是将地图导入到图像编辑软件中,并使用与比例相匹配的线来测量距离,但这非常不切实际,而且可能很耗时,而且我仍然无法测量航向。

编辑:不幸的screenrulerkruler,它们太基础了,因为它们缺乏量角器,以及进行精确旋转的能力。

可以让我叠加、移动和旋转我选择的透明图像的东西怎么样?这将使我能够创建或找到我自己的测量工具图像。

EDIT2:在平板电脑上运行 Ubuntu 18.10

Jac*_*ijm 1

获取屏幕上的几何信息

\n\n

尽管下面的解决方案应该可以快速为您提供所需的所有信息,但不确定信息的呈现方式是否完全满足您的描述。

\n\n

这是此答案的编辑版本,现在通过一些额外的计算进行了扩展,现在包括与假想水平线的角度,以及您绘制的线的长度(以像素(相当于)为单位):

\n\n

在此输入图像描述

\n\n

剧本

\n\n
#!/usr/bin/env python3\nimport subprocess\nimport os\nimport math\n\nhome = os.environ["HOME"]\narea = home+"/"+".measure_area.txt"\n\ndef get_pos():\n    pos_data = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")\n    return [m[2:] for m in pos_data.split()[:2]]\n\ndef confirm():\n    get = subprocess.check_output(["xrandr", "--verbose"]).decode("utf-8").split()\n    for s in [get[i-1] for i in range(len(get)) if get[i] == "connected"]:\n        br_data = float(get[get.index("Brightness:")+1])\n        brightness = lambda br: ["xrandr", "--output", s, "--brightness", br]\n        flash = ["sleep", "0.1"]\n        for cmd in [brightness(str(br_data-0.1)), flash, brightness(str(br_data))]:\n            subprocess.call(cmd)\n\nif not os.path.exists(area):\n    with open(area, "wt") as measure:\n        measure.write(str(get_pos()))\n    confirm()\nelse:\n    second = get_pos()\n    with open(area) as first_m:\n        try:\n            first = eval(first_m.read())\n            w = int(math.fabs(int(second[0]) - int(first[0])))\n            h = int(math.fabs(int(second[1]) - int(first[1])))\n            l = str(round(math.sqrt(pow(w, 2) + pow(h, 2))))\n            arc = math.degrees(math.atan(w/h))\n            angle = str(round(90-arc))\n            command = [\n                \'zenity\', \'--info\', \'--title\', \'Area Size\', \'--width\', \'200\',\n                \'--text\', "rectangle: " + str(w) + \'px x \' + str(h) + "px"\n                "\\nline length: " + l + "px\\nangle: " + str(angle) + "\xc2\xb0",\n            ]\n            #---\n            confirm()\n        except SyntaxError:\n            text = "Please try again, there was an error in the data"\n            command = [\'zenity\', \'--info\', \'--title\', \'Please try again\', \'--text\', text]\n        subprocess.Popen(command)\n    os.remove(area)\n
Run Code Online (Sandbox Code Playgroud)\n\n

怎么运行的

\n\n

该脚本计算鼠标指针两个位置之间的假想水平线的角度、长度和面积大小。

\n\n

其工作原理如下:

\n\n
    \n
  1. 将鼠标指针放在第一个位置(不单击)
  2. \n
  3. 按您选择的组合键(参见下文)
  4. \n
  5. 将鼠标放在第二个位置(再次不单击)
  6. \n
  7. 再次按下组合键。Zenity 窗口将显示结果,如上图所示。
  8. \n
\n\n

如何设置

\n\n
    \n
  1. 该脚本使用xdotool

    \n\n
    sudo apt-get install xdotool\n
    Run Code Online (Sandbox Code Playgroud)
  2. \n
  3. 将下面的脚本复制到一个空文件中,将其保存为~/bin(您可能需要创建目录)measure_area(无扩展名)并使其可执行

  4. \n
  5. 添加您选择的组合键来运行脚本:选择:系统设置 >“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:

    \n\n
    measure_area\n
    Run Code Online (Sandbox Code Playgroud)
  6. \n
\n\n

笔记

\n\n
    \n
  • 您必须先注销/登录
  • \n
  • 你选择的第一/第二位置并不重要;该脚本测量绝对值
  • \n
\n


小智 0

假设您拥有的 PDF 地图是地理空间 PDF,您可以使用 Adob​​e Acrobat 和内置分析工具,也可以使用手机或平板电脑上的 Avenza Maps 移动应用程序。