使用REGEX从.kml转换边界点



我有从kml收到的边界,我能够挖掘XML并仅抓住边界点。我需要从中转换点:

-92.25968002689014,30.7180061776264,0 -92.25976565654548085,30.7175188974974971,0-0 ,30.71604891951008,0 -92.26018466666660856,30.71558863525373,0 -92.26037301574165,30.71498469610939393939393939393939393939393939393939393939393939393939393939393939393939326055555555555555555555555555555555555555555555555555555555555555555555555555555太平洋好金可别2.26065861561004,30.71411636559884,0

polygon((( - 92.25968002689014 ,30.71604891951008,-92.2601846664660856 30.715558863525373,-92.26037301574165,30.714984696610939, 861561004,30.7141163655984)

我正在使用的正则模式是:",[0-9 .-] * * *" 我的计划是使用正则替换替换任何逗号,然后用任何数量的数字,周期或负标志,然后是一个或多个带有某些角色(例如结肠)的空间。然后用空间代替所有逗号,然后用逗号重录所有结肠。但是由于某种原因,我无法正常工作。任何建议都将不胜感激。

您可以尝试以下方法:

([-d.]+),([-d.]+),([-d.]+)s+([-d.]+),([-d.]+),([-d.]+)s*;

示例C#代码:

String polygon(String input)
{
    string pattern = @"([-d.]+),([-d.]+),([-d.]+)s+([-d.]+),([-d.]+),([-d.]+)s*";
    RegexOptions options = RegexOptions.Singleline | RegexOptions.Multiline;
    String finalString = "POLYGON((";
    int count = 0;
    foreach (Match m in Regex.Matches(input, pattern, options))
    {
        if (count > 0)
            finalString += ",";
        finalString += m.Groups[1] + " " + m.Groups[2] + ", " + m.Groups[4] + "," + m.Groups[5];
        count = 1;
    }
    finalString += "))";
    return finalString;    
}

输出:

POLYGON((-92.25968002689014 30.7180061776264, -92.25976564548085,30.71751889774971,-92.25992462712097 30.71670626485147,
 -92.26006418327708,30.71604891951008,-92.26018466460856 30.71558863525373, -92.26037301574165,30.71498469610939,-92.260
54805030229 30.71444051930294, -92.26065861561004,30.71411636559884))

最新更新