Corner-Optimal Line Utility Modifier for Better Inflection and Node Adjustment (Columbina)
用于改进弯折与节点调整的转角优化线型之实用修改器
A Java OpenStreetMap (JOSM) plugin providing convenient Fillet (round corner), Chamfer, Transition Curve drawing, and …
might provide more features in the future.
一个提供倒圆角、倒斜角、缓和曲线工具的Java OpenStreetMap(JOSM)插件,未来计划开发更多功能。
The name of this plugin has absolutely no relationship with Kuutar or Columbina Hyposelenia, and it's definitely not an attempt to fit the meme. xd
本插件的名称绝对与库塔尔或哥伦比娅·希珀塞莱尼娅无关,绝对不是凑的名字。(逃
To get quick start, please download the release and copy it to your JOSM plugin directory %APPDATA%\JOSM\plugins\ (for Windows, usually looks like …\AppData\Roaming\JOSM\plugins\).
如欲快速开始,劳烦您下载一个发布版本,并复制到JOSM的插件文件夹%APPDATA%\JOSM\plugins\(视窗系统,通常是…\AppData\Roaming\JOSM\plugins\)下。
Then in JOSM's plugin preference, search and select Columbina and restart to activate her. Now you could use this plugin.
随后在JOSM首选项之插件设置中,搜寻Columbina并勾选启用,重启JOSM后即可使用插件。
This plugin depends on another plugin, Utilsplugin2, which is typically included with JOSM by default. If your JOSM does not have Utilsplugin2 installed, JOSM will prompt you to install it.
本插件依赖另一插件Utilsplugin2,其通常由JOSM自带,如果您的JOSM没有安装Utilsplugin2,JOSM会要求你一并安装。
All features are located under the More Tools (M) menu.
所有功能均在更多工具〔M〕菜单下。
Also known as Fillet.
英语又称「Fillet」。
Allows users to fillet each corner node of the selected ways with a specified radius.
允许用户对选定路径的每个拐角节点按指定半径倒圆角。
The plugin supports specifying the arc radius for fillets. Node density can be controlled via chainage length, and a maximum number of nodes per curve segment is also provided for control.
Additionally, the plugin offers options to copy tags from the original way, remove the original way after drawing, and toggle selection to the new way after drawing.
插件支持指定圆角的圆弧半径,可以通过桩距控制节点密度并提供每段曲线最大节点数控制。插件亦提供复制原有路径标签、绘制后移除原有路径、绘制后切换选择新路径的选项。
The plugin automatically and uniformly interpolates nodes along the curve, adding them at even intervals.
For longer curves (when the radius remains constant, curves with smaller deflection angles become longer), a greater number of nodes will be generated.
插件会自动在曲线上均匀地插值并添加节点,越长的曲线(当半径不变时,张角越小的拐点曲线越长)点数越多。
Allows the user to chamfer each corner node of the selected way by a specified chamfer distance or chamfer angle.
允许用户对选定路径的每个拐角节点按指定切距或者切角倒斜角。
Assuming a corner is formed by nodes A → B → C, where B is the vertex, the plugin supports two modes: first, specifying the chamfer distance on both sides (A and C) of the vertex;
second, specifying the chamfer distance on side A and the chamfer angle on side A. The plugin also provides options to copy tags from the original way, remove the original way after drawing, and toggle selection to the new way after drawing.
假定一个拐角是A→B→C,其中B是拐点,插件支持2种模式:一是指定拐点A和C两侧的切距;二是指定A侧的切距和A侧的切角。插件亦提供复制原有路径标签、绘制后移除原有路径、绘制后切换选择新路径的选项。
Allows users to draw transition curves (using the clothoid method) with specified circular curve radius and transition curve length for each corner node of the selected way.
允许用户对选定路径的每个拐角节点按指定圆曲线半径、缓和曲线长度绘制缓和曲线(回旋线画法)。
The plugin will draw two segments of Euler spiral and a circular curve for each corner.
It supports specifying chainage length (node spacing) and provides options to copy tags from the original way, remove the original way after drawing, and toggle selection to the new way after drawing.
插件将为每个拐角绘制两段回旋线(Euler回旋线)和圆曲线。插件支持指定桩距(节点距离),亦提供复制原有路径标签、绘制后移除原有路径、绘制后切换选择新路径的选项。
Allows the user to draw a straight line starting from the selected node, based on a specified deflection angle and length relative to the selected way.
允许用户在选定的路径和节点的基础上指定偏角和长度绘制从该节点出发的直线。
A positive deflection angle indicates a turn to the left, and a negative angle indicates a turn to the right.
其中偏角向左拐为正角度,向右为负角度。
This feature allows users to connect specified segments between two ways with smooth curves.
该功能允许用户使用平滑曲线连接两条路径上的指定节点段。
Users need to select the start way (SW), start reference node (S), end way (EW), and end reference node (E).
The first selected way is designated as SW, and the second as EW; the order in which S and E are selected does not matter, as the plugin will automatically match them to SW and EW as best as possible.
The plugin will draw a curve starting from the tangent node between the previous node (before start, BS) of S on the SW to S, at the direction of BS → S.
Similarly, it will end on the tangent node between E and its next node (after end, AE) on the EW, at the direction of E → AE.
您需要选择起点路径(SW)、参考起点(S)、终点路径(EW)、参考终点(E),其中先选择的路径是SW,后选择的路径是EW;S和E的选择顺序无要求,会尽可能自动匹配到SW和EW上。插件会尝试在您选择的S和其在SW上的前一个节点(BS)之间找到切点以BS→S的方向引出一条曲线,连接至您选择的E和其在EW上的后一个节点(AE)之间的切点,以E→AE的方向结束。
The selections need to meet the following requirements:
选定要素需要满足:
- SW and EW can't be parallel (please use two 90° corner);
SW和EW不能平行(请使用两个90°拐角); - To define the curve's starting and ending directions, the start node S cannot be the first node of the start way, and the end node E cannot be the last node of the end way; and
为了获得曲线开始和结束的方向,S不能是SW上第一个节点,E不能是EW上最后一个节点; - The S and E can be the same node when shared by both SW and EW.
S和E可以是一个节点,但此时其必须同时在SW和EW上。
Users can choose the curve direction: left (counter-clockwise) or right (clockwise). The curve radius must be specified,
and if desired, a transition curve can be added by providing its length (if you don't need, use 0m.).
用户可以选择曲线的行进方向:向左(逆时针)或向右(顺时针)。需要指定曲线半径;并可选择添加缓和曲线,此时需提供缓和曲线长度(如果不需要请输入0m)。
The plugin offers an "Allow cutting or extending the input way ends" option.
When enabled and if the selected S is the last node of the SW and the E is the first node of the EW, the plugin will attempt to move S and E to the actual start and end nodes (i.e. the tangent nodes) of the curve.
However, if S or E is used by other ways, they will not be moved, and the curve's start and end nodes will remain being independently added.
插件提供「允许裁切或延长现有路径端头」选项。当所选的S是SW的最后一个节点,且E是EW的第一个节点时,启用此选项后,插件会尝试将S和E移动到曲线的实际起点和终点。但若S或E同时被其他路径使用,则不会移动,而是保持独立添加曲线起点和终点。
The usage example below demonstrates how to use this tool to sketch curve connection similar to the left-turn direct ramps (with angles less than 90°) and left-turn loop ramps (with angles greater than 180°) for a cloverleaf interchange,
illustrating the relationship between input features, curve direction (although they actually turn left), and the final result.
以下使用示例展示了如何利用此工具绘制类似于苜蓿叶立交的左转直接匝道(角度小于90°)和左转环形匝道(角度大于180°)的曲线连接,说明了输入要素选择、行进方向(尽管最终都是向左拐)与最终结果之间的关系。
When "
Remove original way after drawing" is enabled:
启用「
绘制后移除原有路径」时:
- For old ways that have already been uploaded, the plugin will invoke the "Replace Geometry" function of the Utilsplugin2 to replace the old way in order to preserve its data history. Therefore, if the old way does not meet the requirements for the Replace Geometry function (e.g., it is not entirely within the downloaded area), the replacement will fail and the old way will be retained;
对于已上传的旧路径,插件将调用Utilsplgin2之「替换几何图形」功能替换旧路径以保留数据历史版本,故当旧路径不满足替换几何图形功能的要求时(如未完全在下载区域中),替换将失败,旧路径将保留; - For newly drawn, unuploaded old ways, the plugin will delete them directly;
对于新绘制、未上传的旧路径,插件将会直接删除; - Considering that users might accidentally select the option to remove the original way, the operations of drawing the new way and removing the old way are separated within the Command stack. This allows you to undo both actions simultaneously, preserving both ways for further adjustments. Consequently, you would need to perform two undo operations to completely remove the newly drawn way.
虑到有人可能会错误选择移除旧路径的选项,绘制新路径和移除旧路径在命令栈中是分开的,使得你可以通过一次撤销同时保留它们并做出进一步的调整;相应地,你需要两次撤销才能完全移除新绘制的路径。
- The plugin packages the replace/delete operations within a single command sequence, and no actual changes occur until the sequence is committed. Consequently, when nodes are shared exclusively between the ways being filleted, the command generation logic assumes these nodes are still referenced by another way since the command sequence has not been commited, and therefore excludes them from removal.
因为希望将替换/删除指令打包在一个命令序列中,而在提交命令序列前不会有任何内容实际删除,故当需要圆角的路径间存在交点且交点只由需要圆角的路径引用,移除旧路径生成命令时始终会认为交点被另一条路径引用,交点不会被移除;
Other issues are welcomed at this page ↓
其他问题欢迎在这个页面提出 ↓
Issues
Actually, this plugin was developed for OpenGeofiction (OGF), a fictional world mapping project based on the OpenStreetMap (OSM) framework.
It addresses the difficulty in JOSM of drawing long-distance transportation features (such as railways and highways) and small-radius fillets (like the rounded corners at airport taxiway intersections).
This plugin is a small contribution to the OGF community.
其实这个插件是为了OpenGeofiction(OGF)开发,这是一个基于OpenStreetMap(OSM)框架的架空地图项目,其中的长距离交通设置(如铁路、高速公路)和一些小拐角(如机场滑行道交叉点的圆角)在JOSM中很难实现,故开发了这个插件,算是对OGF社区的一点微小的贡献。
I hope it can also be useful for everyone in the OSM community.
希望对OSM社区的大家也有用处。
Oops, it's turning into CAD.
坏了,成CAD了
This plugin is built using Ant. If you wish to continue development or fix issues based on the existing code, you are welcome to create a new branch and make edits.
Additionally, please note that the plugin is developed using the JOSM software API. You must add JOSM's core JAR file as a library.
Since the plugin also uses Utilsplugin2, you will need to add the Utilsplugin2.jar as a library as well.
本插件使用Ant构建,如果您希望在现有代码的基础上继续开发或修正错误,欢迎你拉取一个新的分支并进行编辑。此外需要注意的是,插件是基于JOSM软件API开发的,你必须将JOSM本体的JAR文件添加为库;同时由于插件使用了Utilsplugin2,你还需要将Utilsplugin2.jar也添加为库。
The JAR file for JOSM's core can be downloaded from its official website. The JAR for Utilsplugin2 can be found in the aforementioned plugin directory.
JOSM本体的JAR文件可以在其官网下载到,Utilsplugin2的JAR可在前述插件文件夹下找到。
Some helpful documents could be found at doc.md, but now it is in Chinese.
请查看doc.md获取更多有用的信息。
This project currently has no plans to be integrated into JOSM's SVN system, which means localization for various languages must be handled independently.
The plugin's native language is Chinese, and an English translation is already provided (as JOSM requires English to be used within the I18n functions).
If you would like to contribute translations for this project, please navigate to the i18n directory, download the template.po file, adjust details such as the date and language code, and submit your translated version to this project.
这个项目目前暂时没有计划加入JOSM的SVN系统,意味着只能自行进行各种语言的本地化,插件的原生语言是汉语,已有英语的翻译(因为JOSM要求在I18n函数中必须使用英语)。如果你希望为这个项目翻译,欢迎您进入i18n目录,下载template.po文件,修改其中的日期、语言代码等,翻译好后提交入本项目。
Thank you for your support!
感谢您的支持!






