Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 当使用Perl解析KML以外的坐标时,如何解释多重几何多边形?_Xml_Perl_Parsing_Kml - Fatal编程技术网

Xml 当使用Perl解析KML以外的坐标时,如何解释多重几何多边形?

Xml 当使用Perl解析KML以外的坐标时,如何解释多重几何多边形?,xml,perl,parsing,kml,Xml,Perl,Parsing,Kml,我编写了一个perl脚本,从一些KML文件中提取坐标。像这样: if ($start ne 6) { $sheet = substr($line,$start,$end-$start); } $start = index($line,"<coordinates>") + 13; $end = index($line,"</coordinates>"); $coords = substr($line,$start,$end-$start); i

我编写了一个perl脚本,从一些KML文件中提取坐标。像这样:

if ($start ne 6) 
  {
  $sheet = substr($line,$start,$end-$start);
  }
  $start =  index($line,"<coordinates>") + 13;
  $end = index($line,"</coordinates>");
  $coords = substr($line,$start,$end-$start); 
if ($start ne 12) 
  {
  @values = split (' ',$coords);
  foreach (@values) {}
  my (@lat, @long);
( $lat[@lat], $long[@long] )
    = split /,/ for @values;
if($start ne 6)
{
$sheet=substr($line,$start,$end-$start);
}
$start=索引($line,“”)+13;
$end=索引($line,“”);
$coords=substr($line,$start,$end-$start);
如果($start ne 12)
{
@值=拆分(“”,$coords);
foreach(@values){}
我的(@lat,@long);
($lat[@lat],$long[@long])
=拆分/,/表示@值;
这将从此行提取坐标:

-4.7999999989183125,54.47999999988144478-5.399999999887073,54.479999999998084068-5.40999999614521,54.73999998345262-4.80999999103597,54.74999998414239-4.79999989183125,54.4799999814478

但是当我有多个环形多边形在一行中多次重复
标记时,它只检索第一组坐标(正如您所期望的)

所以我的问题是:有没有一种方法可以修改我已经拥有的来适应多多边形,或者我必须使用不同的解析技术


谢谢。

我将索引替换为反向索引,然后删除<和>之间的任何内容:

while ( <INPUT> ) {
  chomp();
    $line = $_;
  $start =  index($line,"SHEET") + 7;
  $end = index($line,"</SimpleData>");
if ($start ne 6) 
  {
  $sheet = substr($line,$start,$end-$start);
  }
  $start =  index($line,"<coordinates>") + 13;
  $end = rindex($line,"</coordinates>");
  $coords = substr($line,$start,$end-$start);
  $coords =~ s/<.*>//; 
if ($start ne 12) 
  {

  @values = split (' ',$coords);
while(){
chomp();
$line=$\;
$start=索引($line,“SHEET”)+7;
$end=索引($line,“”);
如果($start ne 6)
{
$sheet=substr($line,$start,$end-$start);
}
$start=索引($line,“”)+13;
$end=rindex($line,“”);
$coords=substr($line,$start,$end-$start);
$coords=~s//;
如果($start ne 12)
{
@值=拆分(“”,$coords);