0
#!/usr/bin/perl
use DBI;
use CGI::Carp qw(fatalsToBrowser);

#Set content type
print "Content-Type: image/svg-xml\n\n";

#Establish connection to database
$dbh = DBI->connect ('dbi:Oracle:geosgen','USER','PASS')
|| die "Man down! Man down!: $DBI::errstr";

#Send SQL query for mountains
$sth1 = $dbh->prepare("select table_alias.mot.sdo_point.X, table_alias.mot.sdo_point.Y, table_alias.name 
from X.mounts table_alias");

$sth1->execute;

#Send SQL query for tourist attraction 
$sth2 = $dbh->prepare("select table_alias.mot.sdo_point.X, table_alias.mot.sdo_point.Y 
from   s1227289.tours table_alias");

$sth2->execute;

#Set content type
print qq(<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" 
"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">);

print qq(<svg width="20cm" height="20cm" viewBox="-5.8 56 0.8 2">);

#print mountains
while (@data = $sth1->fetchrow_array()) {
print qq(
  <circle cx="$data[1]" cy="$data[0]" r="0.002" fill="green">
  </circle> 
  <text x="$data[1]" 
    y="$data[0]" 
    fill="black" 
    style='font-size:0.01px;font-family:Arial'>$data[2]</text>  

       );   
  }

#print tourist attractions
while (@data = $sth2->fetchrow_array()) {
print qq(
  <circle cx="$data[1]" cy="$data[0]" r="0.002" fill="red">
  </circle>   
       );   
  }

print qq(</svg>);

私はこれを修正しようとしていますが、理解できません! 問題は変換にあります。プロットされた点は上下逆になっているため、反転する必要があります。以前にも同様の問題を修正しましたが、今回は y の値がすべてマイナスの数値 (つまり -5.8) です。

どうすればこれを解決できますか? 要約すると、私は基本的に変換を実行したいのですが、-ve 番号でこれを行う方法について行き詰まっています。同様の質問を検索しましたが、-ve の数値を扱ったものはありません。

4

1 に答える 1

0

transform = "scale(1、-1)"属性を追加すると、状況が反転します。あるいは、おそらくもっと簡単に、phpでy値を-1 * $data[0]として出力します。

于 2013-02-15T08:43:38.503 に答える